View和Event位置改变方法

本文详细解析了Android中View的坐标系统,包括getLeft、getTop等方法的意义及使用场景,同时介绍了getTranslationX、getX等方法的区别,并对触摸事件如getX、getRawX进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

View:

getLeft:相对于父布局,该View距离父布局 左边缘 的距离(px);

getTop:相对于父布局,该View距离父布局 上边缘 的距离(px);

getRight:相对于父布局,该View距离父布右边缘的距离(px);

getBottom:相对于父布局,该View距离父布局下边缘的距离(px);


getTranslationX:相对于自身初始位置,该View通过setTranslationX方法被水平移动的距离;

getTranslationY:相对于自身初始位置,该View通过setTransitionY方法被垂直移动的距离;


getX:相对于父布局,该View的getLeft距离  +  该View的getTranslationX距离;

getY:相对于父布局,该View的getTop距离  +  该View的getTranslationY距离;


setTranslationX:相对于自身初始位置,该View水平方向移动相应距离;

setTranslationY:相对于自身初始位置,该View垂直方向移动相应距离;


setX(distance):相对于父布局,该View水平方向移动 distance - mLeft 距离,所以distance是相对于父布局左边缘的距离。

setY(distance):相对于父布局,该View垂直方向移动 distance -mTop 距离,所以distance是相对于父布局上边缘的距离。


:View的setX、setY、getX、getY 慎用!他们内部的计算逻辑容易影响整体计算。用setTranslation、getTranslation取代,因为这两套方法是相对于自身初始位置的,不受padding和margin影响。

offsetTopAndBottomoffsetLeftAndRight直接改的是mLeft、mTop、mRight、mBottom值,所以调用getLeft、getTop、getRight、getBottom方法其值会变。同样慎用


Event:

getX:如果触击到该View区域内,则表示,相对于该View,触击点距离该View的 左边缘的距离(px)

        如果触击到该View区域外,则表示,相对于该整个屏幕,触击点距离整个屏幕的 左边缘的距离(px)

getY:如果触击到该View区域内,则表示,相对于该View,触击点距离该View的 上边缘的距离(px)

        如果触击到该View区域外,则表示,相对于该整个屏幕,触击点距离整个屏幕的 上边缘的距离(px)


getRawX:相对于该整个屏幕,触击点距离整个屏幕的 左边缘的距离(px);

getRawY:相对于该整个屏幕,触击点距离整个屏幕的 上边缘的距离(px);







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值