美文网首页
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