android判断手势方向详解

在控件上设置OnTouchListener事件

判断手势方向包括:按下时,移动,松开

switch(event.getAction()){

case MotionEvent.ACTION_DOWN://按下时

startX=event.getRawX();//获得按下时的X坐标

startY=event.getRawY();//获得按下时的Y坐标

offsetsByX=0;//设置X轴方向总偏移量

offsetsByY=0;//设置Y轴方向总偏移量

break;

case MotionEvent.ACTION_MOVE:

movedX=event.getRawX();//获得移动时候的X坐标

movedY=event.getRawY();//获得移动时候的Y坐标

offsetX=startX-movedX;//获得X轴的偏移量

offsetY=startX-movedY;//获得Y轴的偏移量

if(Math.abs(offsetX)>Math.abs(offsetY)){

//若X轴的偏移量大于Y轴的偏移量,则表示在横向滑动,否则在纵 向滑动,若相同,则表示移动的时候没有移动,这里滑动的时候, 会不断的调用这个,一次滑动的距离等于多次的偏移量相加

}

offsetsByX+=offsetX;//不断移动的时候获得移动的X轴总偏移量

offsetsByY+=offsetY;//获得Y轴总偏移量

startX=movedX;//把每次移动后的X坐标作为下次移动开始时的X坐标

startY=movedY;//把每次移动后的Y坐标作为下次移动开始时的Y坐标

break;

case Motion.ACTION_UP:

if(Math.abs(offsetsByX)>Math.abs(offsetsByY)){

//若X的总偏移量大于Y的总偏移量说明是X轴方向的滑动,否则是Y 轴方向的滑动

if(offsetsByX>0){

//若大于0则表示向左移动,若小于0则表示向右移动

}

}else{

if(offsetsByY>0){

//做大于0则表示向下移动,若小于0则表示向上移动

}

}

break;

}

这里的所有变量都是int类型,最好写成全局变量(上面写的应该很好理解吧)

你可能感兴趣的:(android学习笔记)