歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發之手勢識別GestureDetector

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