1.四个左边(left,top,bottom,right)是相对于父view的
width = right - left;
height = bottom - top;
2.x,y,translationX,translationY(都是相对于父容器的) x,y是view左上角坐标,translationX,translationY是View左上角相对于父容器的偏移量(默认值为0),为什么有这些参数呢?View在平移过程中top,left表示的是原始左上角的位置信息,其值并不会改变。此时发生改变的是这四个参数。
3.通过MontionEvent对象,我们可以得到点击事件的发生坐标x和y(getX() getY() 当前View左上角坐标)( getRawX() getRawY() 相对于手机屏幕左上角坐标)
4.一些常用的工具:
VelocityTracker:
VelocityTracker velocityTracker = VelocityTracker.obtain();
velocityTracker.addMovement(event);
velocityTracker.computeCurrentVelocity(1000);
int xVelocityTracker = (int) velocityTracker.getXVelocity();
int yVelocityTracker = (int) velocityTracker.getYVelocity();
velocityTracker.clear();
velocityTracker.recycle();
GestureDetector : 点击这里 转自大神的博客
Scroller
5.View的滑动
方式一:使用scrollTo、scrollBy
view内部的两个属性mScrollX mScrollY (通过getScrollX 和getScrollY方法得到),在滑动过程中mScrollX的值等于view上边缘和view内容上边缘在竖方向的距离。scrollTo scrollBy只能改变view的内容位置,为不能改变view在布局中的位置
方式二:使用动画
属性动画
方式三:
改变布局参数
6.弹性滑动
方式一:Scroller
方式二:动画
方式三:循环发送延迟消息
7.view事件传递
如果view一旦开始处理事件,如果它不消耗ACTION_DOWN事件,那么同一事件序列的其他事件都不会再交给他处理,并且事件将重新提交由他的父元素处理,即父元素的onTouchEvent会被调用
8.view在dispatchTouchEvent方法中会先判断是否设置了onTouchListener,然后在执行onTouchEvent方法,如果onTouch方法返回true,则onTouchEvent方法不会别调用,这样做的好处是在外界处理点击事件。
9.只要view的clickable或者龙Clickable有一个设置为true,就会消耗事件。