欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android必备知识点之View及View的事件分发机制

程序员文章站 2022-07-14 19:59:07
...

View:控件/ViewGroup:控件组

1.View的位置参数

top/left/right/bottom

top:veiw左上角距离父控件的距离, top = view.getTop();

bottom:view右下角距离父控件的距离,bottom = view.getBottom() = view.getTop() + width

x,y,translationX和translationY

x,y是View左上角的坐标

translationX View在X轴上的偏移量

x = left + translationX

view在平移的过程中,left/top/bottom/right是起始位置的值,不会发生改变

4.View的事件分发机制

2.MotionEvent

1.触摸事件

①ACTION_DOWN / ACTION_MOVE / ACTION_UP 最常用了,不详细说了
②getX()/getY()和getRawX()/getRawY():

getX()/getY()触摸点相对于当前View左上角的x和y坐标,而getRawX()/getRawY()触摸点相对屏幕左上角的x和y坐标

2衍生:

TouchSlop设置能被系统识别的滑动的最小距离

VelocityTrackey:追踪手指滑动过程中的速度

VelocityTrackey vt = VelocityTrackey.obtain();
vt.addMovement(event);

vt.computeCurrentVelocity(1000);//测试时间,一秒内的速度
int xVelocity = vt.getXVelocity();
int yVelocity = vt.getYVelocity();

//别忘了回收
vt.clear();
vt.recycle();

3.View的滑动

三种让View滑动的方法:

1.scrollTo(x, y)/scrollBy(x, y)

scrollBy是基于基于当前位置的相对滑动,而scrollTo是基于所传递参数的绝对滑动。

①public void scrollTo(int x, int y)

说明:两个参数x和y,代表的是偏移量,这时的参照物是(0, 0)点。

②public void scrollBy(int x, int y)

说明:两个参数x和y,代表的是偏移量,这时的参照物是当前view的坐标。

getScrollX():View左边缘和View内容左边缘在水平方向上的距离,从左向右滑是负直。

getScrollY():View上边缘和View内容内容上边缘在水平方向上的距离,从上向下滑是负值。

2.动画

动画中的translationX和translationY平移方法来滑动,不能真正改变view的位置,其点击位置还是原来的位置

3.改变布局参数

LayoutParams params = btn.getLayoutParams();
params.with += 100;
params.leftMargin += 100;
btn.setLayoutParams(params);

三种方式的对比:方式一只能滑动View的内容,不是滑动View本来的位置,但是不影响内部点击事件。