欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Android中多点触控以及手势的基础知识

发布时间:2023/12/16 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android中多点触控以及手势的基础知识 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
  • 触摸事件监听
    注意:
    1)
    对于多点触控,我们需要由MotionEvent.getAction()&MotionEvent.ACTION_MASK得到:ACTION_POINTER_DOWN、ACTION_POINTER_UP;
    2)
    第二个手指按下时,将触发MotionEvent.ACTION_POINTER_DOWN事件
  • @Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction()& MotionEvent.ACTION_MASK;switch (action) {case MotionEvent.ACTION_DOWN://单点和多点两者共用的break;case MotionEvent.ACTION_POINTER_DOWN://第二个手指按下时,触发break;case MotionEvent.ACTION_MOVE:break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:break;}}
    • 1

    event.getPointerCount() 获取当前触控点的数量

    event.getPointerId(i) 获取指定触控点的Id,用于区分不同的触控点

    event.getX(i) 获取指定触控点的X坐标

    event.getY(i) 获取指定触控点的Y坐标

    event.getPressure(i) 获取指定触控点的压力值,此值的获取需要LCD硬件和驱动的支持
    2. 常用手势处理

    //两点的距离 private float distance(MotionEvent event) {float x = event.getX(0)-event.getY(1);float y = event.getY(0)-event.getY(1);return (float)Math.sqrt(x*x+y*y);}
    • 1
    /*** 取旋转角度** @param event* @return*/private float rotation(MotionEvent event) {double delta_x = (event.getX(0) - event.getX(1));double delta_y = (event.getY(0) - event.getY(1));double radians = Math.atan2(delta_y, delta_x);return (float) Math.toDegrees(radians);}
    • 1
    /*** 按下两点的中心点** @param point* @param event*/private void midPoint(PointF point, MotionEvent event) {float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 2, y / 2);}
    • 1

    总结

    以上是生活随笔为你收集整理的Android中多点触控以及手势的基础知识的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。