Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android--手勢識別之GestrueDetector

Android--手勢識別之GestrueDetector

編輯:Android開發實例

在使用android手機中經常會碰到很多做得很炫效果的應用,比如手指在屏幕上向左或者向右滑動進行界面切換的效果。這其實是用到了一個叫GestureDetector的對象Gesture:手勢 做手勢、Detector:監聽 偵測器。其實就是通過計算從接觸屏幕到離開屏幕過程中xy軸位移,和移動的速度而進行判斷做出後續的動作。

對一個控件實現手勢識別中滑動的監聽(還有單擊、雙擊、長按等等就沒介紹了)有三個步驟:1、新建一個類DefaultGestureDetector繼承自SimpleOnGestureListener重寫onFling事件2、實例化一個手勢識別對象GestureDetector gd=new GestrueDetector(new DefaultGestureDetector());3、重寫控件的onTouchEvent()事件(Activity直接Override,控件就setOnTouchListener())

第一步:

    class DefaultGestureDetector extends SimpleOnGestureListener{
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
final int FLING_MIN_DISTANCE=100;//X或者y軸上移動的距離(像素)
final int FLING_MIN_VELOCITY=200;//x或者y軸上的移動速度(像素/秒)
if((e1.getX()-e2.getX())>FLING_MIN_DISTANCE && Math.abs(velocityX)>FLING_MIN_VELOCITY)
Toast.makeText(Main.this, "向左滑動", Toast.LENGTH_SHORT).show();
else if((e2.getX()-e1.getX())>FLING_MIN_DISTANCE && Math.abs(velocityX)>FLING_MIN_VELOCITY)
Toast.makeText(Main.this, "向右滑動", Toast.LENGTH_SHORT).show();
return false;
}
}

上面的e1.getX()-e2.getX()是計算x軸上移動的距離velocityx:x軸上的移動速率

第二部:

    private GestureDetector gestureDetector;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gestureDetector=new GestureDetector(new DefaultGestureDetector());

}

第三部:

    @Override
public boolean onTouchEvent(MotionEvent event){
return gestureDetector.onTouchEvent(event);
}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved