android VelocityTracker和 GestureDetector滑动监听工具类
来源:互联网 发布:k歌达人 网络异常 编辑:程序博客网 时间:2024/06/15 08:04
这次将两个滑动监听工具类,是方便我们判断当前滑动状态的。
VelocityTracker:速度监听,能够监听x轴和y轴上的分量速度。
GestureDetector:能够检测用户的单击,滑动,双击等行为。
使用例子如下:
public class MainActivity extends AppCompatActivity { private MyView view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); view = new MyView(this); setContentView(view); }}public class MyView extends View implements GestureDetector.OnGestureListener { private int x,y,left,right,top,bottom,rawX,rawY,touchslop; private int startx=0,starty=0,endx=0,endy=0; private String state=""; private GestureDetector mGestureDetector ; public MyView(Context context) { super(context); setFocusable(true); touchslop= ViewConfiguration.get(context).getScaledTouchSlop(); mGestureDetector = new GestureDetector(this); //解决长按后屏幕无法拖动,但是却无法判断长按的情况 mGestureDetector.setIsLongpressEnabled(false); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.BLACK); paint.setTextSize(40); canvas.drawText(" x:" + x + " y:" + y, 50, 100, paint); super.onDraw(canvas); } @Override public boolean onKeyDown(int keyCode,KeyEvent event) { return super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode,KeyEvent event) { return super.onKeyUp(keyCode, event); } @Override public boolean onTouchEvent(MotionEvent event) { VelocityTracker velocityTracker = VelocityTracker.obtain(); velocityTracker.addMovement(event); velocityTracker.computeCurrentVelocity(1000); x=(int)velocityTracker.getXVelocity(); y=(int)velocityTracker.getYVelocity(); invalidate(); velocityTracker.clear(); velocityTracker.recycle(); mGestureDetector.onTouchEvent(event); return true; } @Override public boolean onDown(MotionEvent e) { Log.v("zzw","onDown"); return false; } @Override public void onShowPress(MotionEvent e) { Log.v("zzw","onShowPress"); } @Override public boolean onSingleTapUp(MotionEvent e) { Log.v("zzw","onSingleTapUp"); return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.v("zzw","onScroll"); return false; } @Override public void onLongPress(MotionEvent e) { Log.v("zzw","onLongPress"); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.v("zzw","onFling"); return false; }}
使用方法都很简单,mGestureDetector.setIsLongpressEnabled(false)这个命令慎用,因为它会导致GestureDetector无法判断长按状态。
还有就是 velocityTracker.clear();
velocityTracker.recycle();,记得用完VelocityTracker,要进行回收资源。
再见
0 0
- android VelocityTracker和 GestureDetector滑动监听工具类
- Android手势监听类GestureDetector
- Android手势监听(GestureDetector类)
- Android手势监听类GestureDetector
- Android VelocityTracker类 滑动速度跟踪
- android view滑动助手类 OverScroller VelocityTracker
- Android VelocityTracker与GestureDetector使用简介
- Android手势滑动GestureDetector和OnGestureListener(二)
- Android手势滑动GestureDetector和OnGestureListener(一)
- Android Scroller和VelocityTracker类
- Android手势监听类GestureDetector的使用
- Android手势监听类GestureDetector的使用
- Android手势监听类GestureDetector的使用
- Android手势监听类GestureDetector的使用
- Android手势监听类GestureDetector的使用
- Android-GestureDetector手势滑动
- Android VelocityTracker获取滑动速度
- Fragment设置GestureDetector滑动监听(完美解决方案)
- MongoDB的真正性能
- tensorflow win7 安装(windows7 + tensorflow1.0 + anaconda3 + python3.5 + NVIDA Geforce GTX 960)
- Ubuntu下卸载软件命令行
- 类模板的定义和使用
- 卷积神经网络
- android VelocityTracker和 GestureDetector滑动监听工具类
- 4.2
- Java Scanner 类
- 浅谈前端中的onmouseover 事件
- shell 笔记1
- iOS Bundle的简单使用
- mysql-5.7.11-winx64.zip 安装配置
- Python 生成随机数
- Discuz!后台程序目录/source/admincp/下目录及文件功能详解