Android从2.0版本开始支持多点触摸,在API中体现出来就是一个MotionEvent事件里面包含若干个点的信息。因为不同硬件支持的点数不一样,所以需要通过API获取得到的点的个数。下面是一个SDK文档中的例子,并做了简单的注释:
-
void printSamples(MotionEvent ev) {
-
final int historySize = ev.getHistorySize();
// 获取历史采样的集合大小
- final int pointerCount = ev.getPointerCount();
// 获取事件点数
-
for (int h = 0; h < historySize; h++) { // 对历史采样进行记录
-
// 历史采样的时间点
-
System.out.printf(“At time %d:”, ev.
getHistoricalEventTime(h));
-
for (int p = 0; p < pointerCount; p++) { //
-
System.out.printf(" pointer %d: (%f,%f)",
-
ev.getPointerId§, ev.
getHistoricalX(p, h), ev.getHistoricalY(p, h));
// 打印每个点的坐标
-
}
-
}
-
// 处理当前的点,输出时间以及每个点的坐标
-
System.out.printf(“At time %d:”, ev.getEventTime());
-
for (int p = 0; p < pointerCount; p++) {
-
System.out.printf(" pointer %d: (%f,%f)",
-
ev.getPointerId§, ev.getX§, ev.getY§);
-
}
-
}
2)手势
手势是用户输入的某个或者某系列参数动作,比如按下、上拉、下拉、划圈等。通过对onTouch(MotionEvent)方法里面的MotionEvent进行一段时间的采样并且进行模式检测,即可得到手势。具体的手势检测算法,对于某些应用来说可能是独特的,但是对于常用的软件,使用到的手势一般只有某个方向的滑动、快速滑动、按下、长按等,若是这类常规需求,可以考虑使用Android提供的GestureDetector类进行手势检测。
“GestureDetector"检测手势的输入源是MotionEvent,为了能够把MotionEvent输入到GestureDetector里面进行检测,需实现"GestureDetector.OnGestureListener"接口,一般在Activity里面实现。如果没有特殊要求,按照SDK的推荐,实现一个子接口"GestureDetector.SimpleOn GestureListener”,它有如下一些手势事件:
boolean onDoubleTap(MotionEvent e)–双击。
boolean onDoubleTapEvent(MotionEvent e)–双击按下和弹起都触发,通过e.getAction()判断按下或者弹起。
boolean onDown(MotionEvent e)–按下。
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)–滑动,其中后两个参数是X轴和Y轴的速度,在弹起的时候触发。
void onLongPress(MotionEvent e)–长按,按住的时候触发。
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)–滑动,滑动过程中触发。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**