之前一直不知道这个类,在Android就以为只有鼠标的down和up事件,原来android为了增加用户体验,新增了GestureDetector类,也就是手势识别类,感觉就是将手指触摸屏幕的touch事件更加细分了,构造GestureDetector类时设置一个GestureDetector.OnGestureListener对象来实时监控用户的操作,OnGestureListener对象提供一些常见手势的重写方法,这样就能对不同的手势做不同的处理。

public class GestureActivity extends Activity implements View.OnTouchListener { Button btn = null; private GestureDetector mGestureDetector = null; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btn = (Button) findViewById(R.id.button); btn.setOnTouchListener(this); mGestureDetector = new GestureDetector(this, new LearnGestureListener()); } public boolean onTouch(View view, MotionEvent event) { return mGestureDetector.onTouchEvent(event); } class LearnGestureListener extends GestureDetector.SimpleOnGestureListener { @Override public boolean onSingleTapUp(MotionEvent ev) { Log.d("DEBUG", "onSingleTapUp"); return true; } // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发 // 注意和onDown()的区别,强调的是没有松开或者拖动的状态 @Override public void onShowPress(MotionEvent ev) { Log.d("DEBUG", "onShowPress"); } // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发 @Override public void onLongPress(MotionEvent ev) { Log.d("DEBUG", "onLongPress"); } // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发 @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("DEBUG", "onScroll"); return true; } // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发 @Override public boolean onDown(MotionEvent ev) { Log.d("DEBUG", "onDownd"); return true; } // 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, // 多个ACTION_MOVE, 1个ACTION_UP触发 // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d("DEBUG", "onFling"); return true; } // 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发 public boolean onDoubleTap(MotionEvent event) { Log.d("DEBUG", "onDoubleTap"); return true; } } }

更多相关文章

  1. Android启动脚本init.rc
  2. Android学习系列之三
  3. 《Android学习指南》目录
  4. Erlang实现的百度云推送Android服务端实例
  5. Android(安卓)Button控件 的简单使用(button监听和onClick触发函
  6. 关于android读取用户号码,手机串号,SIM卡序列号
  7. 简述Android触摸屏手势识别
  8. Android(安卓)Low memory killer
  9. 《Android学习指南》目录

随机推荐

  1. Android应用开发——系统自带样式Android
  2. Android中activity背景色的设置
  3. android线上包禁止抓取https包
  4. Activity-RelativeLayout
  5. Android:EditText 多行显示及所有属性
  6. android ListView 去除下划线和选中模式
  7. Android:Material Design(三) 动画
  8. Android系统自带样式Android:theme
  9. android Style属性介绍
  10. Android(安卓)textAppearance的属性设置