美文网首页
View的事件体系1

View的事件体系1

作者: chenmingzhi | 来源:发表于2016-10-27 23:36 被阅读0次

    什么是View?

    View是Android中所有控件的基类,View是一种界面层的控件的一种抽象。除了View,还有ViewGroup,ViewGroup内部可以包含许多控件,即一组View。在Android中,ViewGroup也继承了View,所以View本身就可以是单个控件也可以是由多个控件组成的一组控件,通过这种关系就形成View的树状结构。

    View的位置

    View的位置由它的四个顶点决定,对应View的四个属性top(左上角纵坐标)、left(左上角横坐标)、right(右下角横坐标)、bottom(右下角纵坐标),这些坐标都是相对于View的父容器来说的,因此是一种相对坐标。

    view.png

    width = right – left
    height = bottom – top

    在View的源码中对应于mLeft、mRight、mTop和mBottom四个成员变量,获取方式:getLeft()、
    getRight()、getTop()、getBottom()。View的几个参数:x、y、translationX、translationY,x和y是View左上角的坐标,translationX、translationY是View左上角相对父容器的偏移值(默认为0),View也为它们提供了get/set方法。需要注意的,View在平移过程中,top和left表示原始左上角的位置信息,其值并不会发生改变,此时发生改变的是x、y、translationX、translationY。

    x = left + translationX
    y =top + translation

    MontionEvent和TouchSlop

    手指接触屏幕后所产生的一系列事件:

    ACTION_DOWN —— 刚接触屏幕
    ACTION_MOVE —— 在屏幕移动
    ACTION_UP —— 从屏幕上松开的一瞬间

    点击屏幕后离开松开:DOWN -> UP

    点击屏幕后滑动一会再离开松开:DOWN -> MOVE -> MOVE -> … -> UP

    通过MotionEvent对象可以得到点击事件发生的x和y坐标,getX/getY (当前View左上角的x和y坐标),getRawX/getRawY (返回相对手机屏幕左上角的x和y坐标)。

    TouchSlop是系统所能识别出的被认为是滑动的最小距离,可用在两次滑动事件中对滑动距离的判断,有助于更好的用户体验。

    通过ViewConfiguration.get(getContext()).getScaledTouchSlop()获取

    VelocityTracker

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

    GestureDetector

    手势检测,辅助检测单击、滑动、长按、双击等行为。如果只监听滑动相关,可以在onTouchEvent中实现,如果监听双击,那么就使用GestureDetector

    Scroller

    弹性滑动对象,用于实现View的弹性滑动。当使用View的scrollTo/scrollBy进行滑动时是瞬时的,Scroller可以实现过渡效果,增加用户体验。

    实现View滑动

    1)通过View本身提供的scrollTo/scrollBy(操作简单,适合对View内容的滑动)
    2)通过动画给View施加平移效果 (操作简单,适合没有交互的View和实现复杂动画效果)
    3)通过改变View的LayoutParams使View重新布局 (操作稍复杂,适合有交互的View)

    实现弹性滑动

    1)Scroller
    2)通过动画
    3)使用延时策略

    相关文章

      网友评论

          本文标题:View的事件体系1

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