安卓--多指触控
来源:互联网 发布:政治为什么敏感 知乎 编辑:程序博客网 时间:2024/05/16 02:01
1、体验与发现
首先看一下代码:
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: Log.i(TAG, "viewSizeHandle: down"+event.getActionIndex()); break; case MotionEvent.ACTION_POINTER_DOWN: Log.i(TAG, "viewSizeHandle: point down"+event.getActionIndex()); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: Log.i(TAG, "viewSizeHandle: up"+event.getActionIndex()); break; case MotionEvent.ACTION_POINTER_UP: Log.i(TAG, "viewSizeHandle: point up"+event.getActionIndex()); default: break; } return true; }
安卓多指触控涉及的触摸事件就只有四个:ACTION_DOWN、ACTION_POINTER_DOWN、ACTION_UP、ACTION_POINTER_UP
ACTION_MOVE是不包含其中的,感觉有点坑
以下都是默认在一次多指触控过程中:
- ACTION_DOWN:触控时,总是第一个被触发,之后就不会再触发
- ACTION_POINTER_DOWN:只要还有触控点在屏幕上,之后手指下去都是之触发这个事件
- ACTION_UP:触控点离开时,仅当最后一个触控点消失时才会触发
- ACTION_POINTER_UP:只要还有触控点在屏幕上,每当手指离开都会触发这个事件
- ACTION_MOVE:可以获取按下触控点的位置(getX和getY)
过程:手指1 down →手指2 down →手指3 down → 手指3 up → 手指2 up →手指1 up
可以看到,第一个下去的才会触发ACTION_DOWN,最后一个起来才会触发ACTION_UP
具体自己去体验吧,很简单的代码,实验起来也很简单,在activity贴上代码,慢慢点吧。
2、重要的方法
getPointerCount():返回触控点总数
getActionMasked():用这个方法才能出现掩盖多指触控的事件
getActionIndex():屏幕上每个手指,都对应一个index,返回触发按下或抬起动作的**下标**index
getX (int pointerIndex): 获取指定触控点的X坐标
getY (int pointerIndex) :获取指定触控点的Y坐标
知道上面这些,就靠你自己发挥了,重点是,要记录x,y和善用随后一个才会出现的ACTION_UP
3、在ACTION_MOVE获取位置信息
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: Log.i(TAG, "viewSizeHandle: down"+event.getActionIndex()); break; case MotionEvent.ACTION_POINTER_DOWN: Log.i(TAG, "viewSizeHandle: point down"+event.getActionIndex()); break; case MotionEvent.ACTION_MOVE: if(event.getPointerCount()==2){ Log.i(TAG, "onTouchEvent:0 x:"+event.getX(0)+" y:"+event.getY(0)); Log.i(TAG, "onTouchEvent:1 x:"+event.getX(1)+" y:"+event.getY(1)); } break; case MotionEvent.ACTION_UP: Log.i(TAG, "viewSizeHandle: up"+event.getActionIndex()); break; case MotionEvent.ACTION_POINTER_UP: Log.i(TAG, "viewSizeHandle: point up"+event.getActionIndex()); default: break; } return true; }
只是在ACTION_MOVE获取对应的X和Y,那么你可以判断触控点的数量来实现逻辑,比如:
- 一个触控点,我们就直接认为是简单的移动事件,比如拖拽的逻辑等
- 两个触控点,也许你会写什么放大缩小的逻辑
- 三个触控点,这是三指切换应用什么的
- 根据需要写逻辑,以上知识举例
0 0
- 安卓--多指触控
- 安卓
- 安卓
- 安卓
- 安卓
- 【安卓】
- 安卓
- 安卓
- 安卓
- 安卓
- 安卓
- 安卓
- 安卓
- 安卓
- 安卓学习-安卓环境布置
- 安卓开发-安卓启动过程
- 安卓开发-安卓与sqlite
- 安卓开发工具安卓
- QT设计之银行管理系统
- Miracl在VC++6.0中的配置和使用
- Android之手机软键盘与界面的关系
- NodeJs的ueditor配置注意事项
- OJ 有序树转二叉树
- 安卓--多指触控
- JavaEE 启动tomcat出现entity class not found: 提示的这个类我根本没有定义
- win10 内存占用高
- h5特有表单标签
- 来往
- Windows XP下OpenSSL 安装+OPENSSL编程 椭圆曲线ECC函数
- 八皇后问题(回溯)
- L2-017. 人以群分
- Mybatis 入门