美文网首页
View的基础认识

View的基础认识

作者: 往事一块六毛八 | 来源:发表于2017-02-22 21:55 被阅读3次

什么是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的弹性滑动。

相关文章

网友评论

      本文标题:View的基础认识

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