歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發之手勢識別GestureDetector

Android開發之手勢識別GestureDetector

日期:2017/3/1 10:04:19   编辑:Linux編程

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;
}

實現這些方法,手勢基本就差不多了,當然還有自定義手勢,那是更深一個層次的,在此就不多說了。

Copyright © Linux教程網 All Rights Reserved