GestureDetector 简单使用
2016-04-30 22:23
393 查看
GestureDetector是对传入的MotionEvent进行再判断的类。GestureDetector为我们提供了两个接口OnGestureListener,OnDoubleTapListener,还有一个内部类SimpleOnGestureListener。
我们可以通过两种方法使用GestureDetector
1、声明OnGestureListener接口,或者OnDoubleTapListener接口,之后实例化GestureDetector对象,在OnTouchEvent()中调用gestureDetector.onTouchEvent(event)方法。通过回调来判断触碰的动作。
2、声明一个SimpleOnGestureListener类,复写其中的方法。再将其传入实例化的GestureDetector对象中,之后同1做法。
我们可以通过两种方法使用GestureDetector
1、声明OnGestureListener接口,或者OnDoubleTapListener接口,之后实例化GestureDetector对象,在OnTouchEvent()中调用gestureDetector.onTouchEvent(event)方法。通过回调来判断触碰的动作。
public class AdapterViewFlipperActivity extends Activity implements GestureDetector.OnGestureListener{ GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.adapterviewflipper); gestureDetector = new GestureDetector(this); } @Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 参数解释: // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 // 触发条件 : // X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒 if (e1.getX() - e2.getX() > 100 && Math.abs(velocityX) > 200) { // Fling left Log.i("left","left"); Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show(); } else if (e2.getX() - e1.getX() > 100 && Math.abs(velocityX) > 200) { // Fling right Log.i("right","right"); Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show(); } return false; } }
2、声明一个SimpleOnGestureListener类,复写其中的方法。再将其传入实例化的GestureDetector对象中,之后同1做法。
public class AdapterViewFlipperActivity extends Activity { GestureDetector gestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.adapterviewflipper); gestureDetector = new GestureDetector(this,simpleOnGestureListener); } GestureDetector.SimpleOnGestureListener simpleOnGestureListener = new GestureDetector.SimpleOnGestureListener(){ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 参数解释: // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 // 触发条件 : // X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒 if (e1.getX() - e2.getX() > 100 && Math.abs(velocityX) > 200) { // Fling left Log.i("left","left"); Toast.makeText(AdapterViewFlipperActivity.this, "Fling Left", Toast.LENGTH_SHORT).show(); } else if (e2.getX() - e1.getX() > 100 && Math.abs(velocityX) > 200) { // Fling right Log.i("right","right"); Toast.makeText(AdapterViewFlipperActivity.this, "Fling Right", Toast.LENGTH_SHORT).show(); } return super.onFling(e1, e2, velocityX, velocityY); } }; @Override public boolean onTouchEvent(MotionEvent event) { gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); }
相关文章推荐
- 怎么就死循环了!
- [Python]整数和浮点数,布尔类型
- 解决getOutputStream() has already been called for this response
- Unix网络编程学习笔记(一)初步认识socket编程
- android-----在子线程中更新UI操作的方法
- bestcoder#82回顾
- Java Swing中Substance个人比较喜欢的两种组合
- radis多个盘并发IO
- 实习面试经验
- Codeforces Round #349 (Div. 2) C. Reberland Linguistics
- MOOC的Python笔记(五)文件操作
- Windows 批处理 ping 某个网段
- CSDN将不再使用,请前往简书!
- 《Nodejs开发加密货币》之四:Nodejs让后台开发像前端一样简单
- Summer Training Team Selection (1) Problem F Line Them Up 判断升序降序
- [最短路] 最优乘车(bus)
- Mongodb副本集(复制集)
- 期末总结:LINUX内核分析与设计期末总结
- [转载]企业级应用架构(NHibernater+Spring.Net+MVC3)
- 从Theano到Lasagne:基于Python的深度学习的框架和库