什么是View
- 定义:View是界面层的控件的一种抽象,既可以是单个控件,也可以是多个控件组成的一组控件
View的位置参数
-
定义:View的位置参数主要由它的四个顶点决定,分别对应View的四个属性:top,left,right,bottom.其中top是左上角的纵坐标,left是左上角的横坐标,right是右下角的横坐标,bottom是右下角的纵坐标。
-
注意点
- 这些坐标都是相对于View的父容器来说的,因此它是一个相对坐标
- width=right-left
- height=bottom-top
-
坐标的获取方式
- left=getLeft();
- Right=getRight();
- Top=getTop();
- Bottom=getBottom();
-
额外的参数
x, y ,translationX和translationY,其中x和y是View左上角的坐标,而translationX和translationY是View早上叫相对于父容器的偏移量。并且translationX和translationY的默认值为0,View也为他们提供了get/set方法
注意:
- 这几个参数也是相对于父容器的坐标,view在平移过程中,top和left表示的是原始左上角的位置信息,其值不会发生改变,此时发生改变的是x,y,translationX和translationY这四个参数
- 换算关系:
- x=left+translationX
- y=top+translationY
View的触摸事件
MotionEvent
手指接触屏幕后所产生的一系列事件
- ACTION_DOWN--手指刚接触屏幕
- ACTION_MOVE--手指在屏幕上滑动
- ACTION--UP--手指在屏幕上松开的一瞬间
注意:通过MotionEvent对象我们可以得到点击事件发生的x和y坐标。为此,系统提供了两组方法:getX/getY和getRawX和getRawY
它们的区别:
- getX/getY返回的是相对于当前View左上角的x和y坐标,而getRawX/getRawY返回的是相对于手机屏幕左上角的x和y坐标
TouchSlop
- 定义:系统能够识别的被认为是滑动的最小距离,它是一个常量,合设备有关
获取方式: ViewConfiguration.get(this).getScaledTouchSlop(); - 意义:当我们处理滑动的时候,可以利用这个常量来做一些过滤,比如当两次滑动时间的滑动距离小于这个值,我们认为未达到滑动距离的临界值,因此就可以认为他们不是滑动的。
VelocityTracker(速度追踪)
- 用于追踪手指在滑动过程中的速度,包括水平跟竖直方向上的速度。
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_MOVE){
VelocityTracker velocityTracker=VelocityTracker.obtain();
velocityTracker.addMovement(event);
velocityTracker.computeCurrentVelocity(1000);//时间间隔
int xVelocity= (int) velocityTracker.getXVelocity();
int yVelocity= (int) velocityTracker.getYVelocity();
Log.i("MainAcitvity","xVelocity=="+xVelocity+"---yVelocity=="+yVelocity);
}
return super.onTouchEvent(event);
}
Paste_Image.png
- 注意: 这里的速度是指一段时间内手指所化过度像素数,这里的速度可以为负数
- 计算公式: 速度=(终点位置-起点位置)/时间段
- 最后在不使用的时候
velocityTracker.clear();
velocityTracker.recycle();
GestureDetector
定义:手势检测,用于辅助检测用户的单击,滑动,长按,双击等行为
Scroller
- 定义:弹性滑动对象,用于实现View的弹性滑动。
网友评论