android---gesture手势识别类

package com.example.xxaa;

import android.util.Log;
import android.view.MotionEvent;
import android.view.GestureDetector.SimpleOnGestureListener;

public class MyGesture extends SimpleOnGestureListener {

private final String TAG = "MyGesture";
@Override
public boolean onDoubleTap(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnDoubleTap");
return super.onDoubleTap(e);
}
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnDown");
return super.onDown(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
showTag("---OnFling");
return super.onFling(e1, e2, velocityX, velocityY);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
showTag("---OnScroll");
return super.onScroll(e1, e2, distanceX, distanceY);
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnLongPress");
super.onLongPress(e);
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub
showTag("---OnShowPress");
super.onShowPress(e);
}
/*用于显示TAG*/
public void showTag(String msg){
Log.e(TAG, msg);
}
}


在Activity中调用手势识别的方法:

 
package com.example.xxaa;

import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MotionEvent;

public class MainActivity extends Activity {

private GestureDetector gestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestureDetector = new GestureDetector(new MyGesture());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
return gestureDetector.onTouchEvent(event);
}

}


  1. package com.sun.gesturetest;  
  2.   
  3. import android.content.Context;  
  4. import android.util.AttributeSet;  
  5. import android.view.GestureDetector;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8.   
  9. public class GestureView extends View {  
  10.       
  11.     private GestureDetector mDetector;  
  12.   
  13.     public GestureView(Context context, AttributeSet set) {  
  14.         super(context, set);  
  15.           
  16.         mDetector = new GestureDetector(context, new MyGestureListener());  
  17.         setLongClickable(true);  
  18.         this.setOnTouchListener(new OnTouchListener() {  
  19.               
  20.             @Override  
  21.             public boolean onTouch(View v, MotionEvent event) {  
  22.                 return mDetector.onTouchEvent(event);  
  23.             }  
  24.         });  
  25.     }  
  26. }   在View中设置手势有两点需要注意:

    1:View必须设置longClickable为true,否则手势识别无法正确工作,只会返回Down, Show, Long三种手势。

    2:必须在View的onTouchListener中调用手势识别,而不能像Activity一样重载onTouchEvent,否则同样手势识别无法正确工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值