Android开发之手势识别GestureDetector

2014-11-24 08:49:44 来源: 作者: 浏览: 0

1,Activity继承OnGestureDetector


2,在类中声明GestureDetector gd;


3,在onCreate中实例化gd = new GestureDetector(this);


4,触摸委托给手势


public boolean onTouchEvent(MotionEvent e){

return gd.onTouchEvent(e);
//把事件委托给gd

}


但有时候我们不能把所有的事件都委托给手势,需要接收屏幕抬起事件:


if(e.getAction() == MotionEvent.ACTION_UP){//负责监听屏幕抬起事件
isGoOn = false;
if(t1 != null){
//t1.stop();
t1.interrupt();
t1 = null;
if(vib != null){
vib.cancel();//取消震动
}

}

}


这里我们举了一个取消震动的事件


5,重写手势方法:


public boolean onDown(MotionEvent arg0)
{
//触摸按下
Toast.makeText(this,"onDown" , 8000)
.show();
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
{
//在屏幕上"拖过"
Toast.makeText(this , "onFling" , 8000)
.show();
return false;
}
@Override
public void onLongPress(MotionEvent e)
{
//长按事件,我们使用手机的时候,通常会有弹出菜单的效果
Toast.makeText(this ,"onLongPress" , 8000)
.show();
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY)
{
//"滚动"运动
Toast.makeText(this ,"onScroll" , 8000)
.show();
return false;
}
@Override
public void onShowPress(MotionEvent e)
{
//屏幕按下,没有移动和松开的方法
Toast.makeText(this ,"onShowPress" , 8000)
.show();
}
@Override
public boolean onSingleTapUp(MotionEvent e)
{
//轻触屏幕
Toast.makeText(this ,"onSingleTapUp" , 8000)
.show();
return false;
}


实现这些方法,手势基本就差不多了,当然还有自定义手势,那是更深一个层次的,在此就不多说了。


-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: