美文网首页
View的基础知识

View的基础知识

作者: Ryan_Hoo | 来源:发表于2018-07-08 17:33 被阅读0次

1.1、View基础

View是一种界面层的控件的一种抽象,它代表一个控件。ViewGroup为控件组,它的内部包含多个控件(View)。Android中ViewGroup继承View 。

1.2、View的位置参数

View的位置由他的四个顶点决定对应四个属性:top,left,right,bottom。这些坐标是相对于View的父容器来说的,它是一种相对坐标。

View的位置坐标和父容器的关系

Left = getLeft() ;

Right = getRight() ;

Top = getTop() ;

Bottom = getBottom() ;

这是四个参数的计算公式。

Android3.0,View增加了额外的几个参数:x、y、translationX和translationY 。其中x和y是View左上角的坐标,而translationX和translationY是View左上角相对于父容器的偏移量。

translationX和translationY默认值为0 。

x = left + translationX ;

y = top + translationY ;

View在平移的过程中,top和left表示的是原始左上角的位置信息,其值不会发生改变;发生改变的是x、y、translationX和translationY。

1.3MotionEvent 和 TouchSlop

1)MotionEvent   通过MotionEvent可以得到点击事件发生的X和Y坐标。getX和getY返回的是相对于当前View左上角的X和Y坐标,而getRawX和getRawY返回的是相对于手机屏幕左上角的X和Y坐标。

2)TouchSlop  它是系统所能识别出的被认为是滑动得最小距离。ViewConfiguration.get(getContext()).getScaledTouchSlop()。当两次滑动事件的滑动距离小于这个值时,我们认为他们不是滑动。

1.4、VelocityTracker 、GestureDetector 和 Scroller

1)  VelocityTracker速度追踪。用于追踪手指在滑动过程中的速度包括水平和竖直方向的速度。

使用方法:

步骤一:在View的onTouchEvent方法中追踪当前点击事件的速度。

VelocityTracker  velocityTracker =VelocityTracker.obtain();

velocityTracker.addMovement(event);

步骤二:获取速度之前必须先计算速度

velocityTracker.computeCurrentVelocity(1000); //1000ms

步骤三:获取速度

int  xVelocity = (int)velocityTracker.getXVelocity();// 1000ms水平滑动过的像素值即为水平速度

int  yVelocity = (int)velocityTracker.getYVelocity();//同理

速度有正有负:速度=(终点位置 - 起点位置) /  时间段

步骤四:不需要时回收资源

velocityTracker.clear();

velocityTracker.recycle();


2)手势解析类----GestureDetector

用于辅助检测用户的单击、滑动和长按、双击等行为。

使用:

步骤一:创建一个GestureDetector对象并实现OnGestureListener接口,还可以实现OnDoubleTapListener从而能监听双击行为:

GestureDetector  detector = new GestureDetector(this);

//解决长按屏幕后无法拖动的现象

detector .setIsLongPressEnabled(false);

步骤二:在View的onTouchEvent方法中接管目标View的onTouchEvent方法

boolean consume = detector.onTouchEvent(event);

return consume ;

步骤三:在相应的方法里处理事件。

相关文章

网友评论

      本文标题:View的基础知识

      本文链接:https://www.haomeiwen.com/subject/zyqguftx.html