赞
踩
View是一种界面层的控件的一种抽象,它代表了一个控件,是Android中所有控件的基类。
在我们触摸屏幕的过程中,可以分为三种情况,分别是按下、滑动、弹起。Android中为我们封装好了一个MotionEvent类,使得我们对屏幕的一系列操作事件都可以记录在这个MotionEvent里面。
通过MotionEvent对象我们可以得到点击事件发生的x和y坐标
事件序列:由一个ACTION_DOWN事件,0个或者1个或者多个ACTION_MOVE事件,加上一个ACTION_UP事件组成的一个序列
TouchSlop是系统所能识别出的被认为是滑动的最小距离,这是一个常量,和设备有关,在不同设备上这个值可能不同
ViewConfiguration这个类主要定义了UI中所使用到的标准常量,像超时、尺寸、距离,如果我们需要得到这些常量的数据,我们就可以通过这个类来获取,具体方法如下:
获取ViewConfiguration实例:
ViewConfiguration viewConfiguration = ViewConfiguration.get(Context);
常用的方法
// 获取touchSlop (系统 滑动距离的最小值,大于该值可以认为滑动)
int touchSlop = viewConfiguration.getScaledTouchSlop();
// 获得允许执行fling (抛)的最小速度值
int minimumVelocity = viewConfiguration.getScaledMinimumFlingVelocity();
// 获得允许执行fling (抛)的最大速度值
int maximumVelocity = viewConfiguration.getScaledMaximumFlingVelocity();
// Report if the device has a permanent menu key available to the user
// (报告设备是否有用户可找到的永久的菜单按键)
// 即判断设备是否有返回、主页、菜单键等实体按键(非虚拟按键)
boolean hasPermanentMenuKey = viewConfiguration.hasPermanentMenuKey();
速度追踪,用于追踪手指在滑动过程中的速度,包含水平和竖直方向的速度。
使用过程:
//VelocityTracker是Android系统内置的速度追踪类,首先调用它来追踪当前 //点击事件的速度,event一般是通过onTouchEvent函数传递的MotionEvent对象 VelocityTracker velocityTracker = VelocityTracker.obtain(); velocityTracker.addMovement(event); //先调用computeCurrentVelocity函数,用于设定计算速度的时间间隔 velocityTracker.computeCurrentVelocity(1000); //这里的速度指的是一段时间内手指划过的像素数,比如将时间间隔设置为1000ms, //在1s内,手指在水平方向划过100像素,水平速度就是100. // 速度的计算为(终端位置-起始位置)/间隔时间。 int xVelocity = (int) velocityTracker.getXVelocity(); int yVelocity = (int) velocityTracker.getYVelocity(); //不需要时,调用clear方法回收并重置内存 velocityTracker.clear(); velocityTracker.recycle();
手势检测,用于辅助检测用户的单击,滑动,长按,双击等行为,使用系统的GestureDector来监听这些事件
GestureDetector内部的Listener接口:
监听器 | 简介 |
---|---|
OnGestureListener | 手势检测,主要有:按下(Down)、快速滑动(Fling)、长按(LongPress)、滚动(Scroll)、触摸反馈(ShowPress)和单击抬起(SingleTapUp) |
OnDoubleTapListener | 双 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。