Android多点触摸与手势,fluttertextfield下划线

Android从2.0版本开始支持多点触摸,在API中体现出来就是一个MotionEvent事件里面包含若干个点的信息。因为不同硬件支持的点数不一样,所以需要通过API获取得到的点的个数。下面是一个SDK文档中的例子,并做了简单的注释:

  1. void printSamples(MotionEvent ev) {

  2. final int historySize = ev.getHistorySize();

// 获取历史采样的集合大小

  1. final int pointerCount = ev.getPointerCount();

// 获取事件点数

  1. for (int h = 0; h < historySize; h++) { // 对历史采样进行记录

  2. // 历史采样的时间点

  3. System.out.printf(“At time %d:”, ev.

getHistoricalEventTime(h));

  1. for (int p = 0; p < pointerCount; p++) { //

  2. System.out.printf(" pointer %d: (%f,%f)",

  3. ev.getPointerId§, ev.

getHistoricalX(p, h), ev.getHistoricalY(p, h));

// 打印每个点的坐标

  1. }

  2. }

  3. // 处理当前的点,输出时间以及每个点的坐标

  4. System.out.printf(“At time %d:”, ev.getEventTime());

  5. for (int p = 0; p < pointerCount; p++) {

  6. System.out.printf(" pointer %d: (%f,%f)",

  7. ev.getPointerId§, ev.getX§, ev.getY§);

  8. }

  9. }

2)手势

手势是用户输入的某个或者某系列参数动作,比如按下、上拉、下拉、划圈等。通过对onTouch(MotionEvent)方法里面的MotionEvent进行一段时间的采样并且进行模式检测,即可得到手势。具体的手势检测算法,对于某些应用来说可能是独特的,但是对于常用的软件,使用到的手势一般只有某个方向的滑动、快速滑动、按下、长按等,若是这类常规需求,可以考虑使用Android提供的GestureDetector类进行手势检测。

“GestureDetector"检测手势的输入源是MotionEvent,为了能够把MotionEvent输入到GestureDetector里面进行检测,需实现"GestureDetector.OnGestureListener"接口,一般在Activity里面实现。如果没有特殊要求,按照SDK的推荐,实现一个子接口"GestureDetector.SimpleOn GestureListener”,它有如下一些手势事件:

boolean onDoubleTap(Mot

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

ionEvent 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)–滑动,滑动过程中触发。

void onShowPress(MotionEvent e)–若按下较长时间未滑动,则触发该事件。

上一篇:java:IO


下一篇:基础-数据类型