android View事件体系(一)
1.什么是ViewView是android中所有控件的基类,它是一种界面层的控件的抽象,代表一个控件。2.view的位置参数view的位置主要由他的四个顶点来决定。这些坐标都是相对于view的父容器来说的(top bottom left right)我们很容易得出view的宽高和坐标的关系Widt...
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
更多推荐
所有评论(0)