Android view层
当屏幕可以装下内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。当超出屏幕后,getMeasuredHeight()等于getHeight()加上屏幕之外没有显示的大小。
getHeight()是布局以后的屏幕高度
动态改变布局大小的方法:
LayoutParams lp = 控件ID.getLayoutParams();
lp.height = 320;(单位是像素)
控件ID.setLayoutParams(lp);
使用控件ID.setLayoutParams(lp)之后,还需要添加控件ID.requestLayout();
getMeasuredHeight : 表示的是view的实际大小。
getHeight: 表示的是view在屏幕上显示的大小
view 的left top right bottom的坐标是相对于父亲容器的相对坐标。
width = right -left;
height = bottom - top;
left = view. getLeft();
right = view .getRight();
top = view.getTop();
bottom = view .getBottom();
x y 是view 左上角的坐标,translationX translationY代表view相对于原始坐标(left ,top,right,bottom)的偏移量。
x = left + translationX y = top + translationY 在view的平移过程中,原始坐标(left ,top,right,bottom)不会改变,改变的是,x,y,translationX,translationY。
motionEvent e.getX() e.getY()返回的是相对于 点击view左上角的xy坐标,e.getRawX() e.getRawY()返回的是相对于手机屏幕左上角的坐标。
velocityTracker在使用之前要设置计算时间,使用完之后要回收velocitytracker资源,(类似的用法类似)
mSrollX mSrollY 单位是像素,只改变view 内容的位置不改变view本身在布局的位置,
mSrollX = view左边 - view 内容的左边 mSrollY = view上边 - view 内容上边(在view 的坐标系里
srollTo scrollBy 适用于对view 内容的滑动;动画适用于没有交互的view,复杂的动画效果;layoutparam 改变布局参数,操作复杂,但是适用于有交互的view。
点击事件分发过程由 dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个函数完成。
如果事件能传递到当前view,一定会调用dispatchTouchEvent方法
点击事件首先传递到根view group,它的dispatchTouchEvent就会被调用,如果此viewgroup 的 onInterceptTouchEvent方法返回true(表示要拦截当前事件),接着事件就会交给这个viewGroup来处理,即onTouchEvent方法会被调用。 如果onInterceptTouchEvent返回false表示不拦截当前事件,此事件就会继续传递到它的子元素,接着子元素的dispatchTouchEvent方法就会被调用,如此反复直至事件被最终处理。