1.什么是View

View是android中所有控件的基类,它是一种界面层的控件的抽象,代表一个控件。

2.view的位置参数

view的位置主要由他的四个顶点来决定。这些坐标都是相对于view的父容器来说的(top bottom left right)

                                      

我们很容易得出view的宽高和坐标的关系

Width = right – left;

Height = top – bottom;

如何获取view的left right等

Left  = getLeft();

Right = getRight();

Top = getTop();

Bottom = getBottom();

在android3.0开始,新增额外的几个属性:x ,y , translationX, translationY.

X和y 是view的左上角坐标。TranslationX translationY是View左上角相对于父容器的偏移量。

他们的关系:

X = left + translationX;

Y = top + translation Y;

1).MotionEvent

1)在手指接触屏幕后产生的一系列事件,典型的如下:

* ACTION_DOWN  -------- 手指刚接触屏幕

* ACTION_MOVE ----------  手指在屏幕上移动

* ACTION_UP  -------------- 手指在屏幕上松开的一瞬间

getX 和 getY 返回的相当于当前view的左上角坐标

getRawX和getRawY 返回的相当于手机屏幕上左上角的坐标

2)touchSlop

系统所能识别出被认为是滑动最小的距离,当手指在屏幕上滑动时,两次滑动之间的距离小于这个常量,

那么系统就不认为你是在进行滑动动作。

如何获取:

ViewConfiguration.get(getContext).getScaledTouchSlop();

3) VelocityTracker

速度追踪,用于追中手指在滑动过程中的速度;

4)GestureDetector

手势检测,用于辅助检测用户单击,滑动,长按,双击

建议: 如果只是监听滑动相关,建议自己在onTouchEvent中实现,如果还需要监听别的行为,那么使用GestureDetector

 

5) Scoller

弹性滑动对象,用于实现view的弹性滑动,使用view的sdcollerTo 和scollerBy方法进行滑动时,过程是瞬间完成的,用户体验不好,这个时候可以使用scoller来实现有过度效果的滑动,它是在一定时间间隔完成的,scoller本身无法让view滑动,需要配合computeScroll方法完成这个功能,

                      

3.View的滑动

滑动在android开发中具有很重要的作用,掌握滑动的方法是实现绚丽自定义控件的基础。

通过三种方式可以实现view的滑动:

1)view本身自带的scrollTo / ScrollBy方法来实现滑动,

scrollBy实际上也是调用ScrollTo方法,他实现基于当前位置的相对滑动,

scrollTo则实现了基于所传递的参数绝对滑动

滑动过程中View内部的两个属性mScrollX和mScrollY改变的规则:

在滑动过程中,mScrollX的值总等于view左边缘和view内容左边缘水平的距离,

注: scrollTo和scrollBy只能改版view的内容位置不能改变view在布局中的位置;

View左边缘在内容的右边时:mScrollX为正值,反之为负值

2.通过动画给view施加平移效果来实现滑动

通过一个动画能够让一个view进行平移,平移就是一种滑动,使用动画移动view。

主要操作view的translationX和translationY属性,(最好使用属性动画实现,但是兼用3.0一下版本)

 

3.改变view的layoutParams使得view重新布局而实现滑动,

4.各种滑动方式的对比

ScrollTo/ScrollBy : 操作简单,适合对view内容的滑动

动画: 操作简单,主要适用于没有交互view和实现复杂动画效果

改变布局参数:操作稍微复杂 ,适用于有交互与view

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐