omguare 2012-12-27
Android对手势的支持非常到位,要识别手势,有以下步骤:
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;
}
实现这些方法,手势基本就差不多了,当然还有自定义手势,那是更深一个层次的,在此就不多说了。