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

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本来的位置,但是不影响内部点击事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值