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;
}
實現這些方法,手勢基本就差不多了,當然還有自定義手勢,那是更深一個層次的,在此就不多說了。