Android开发之getX,getRawX,getWidth,getTranslationX等的区别

本文探讨了在Android开发中,如何区分并使用getX、getRawX、getWidth、getTranslationX等相关方法。通过实例解析在触摸事件和View布局中的应用,包括触摸点相对于屏幕和自身的坐标、View的边界距离、以及View在X和Y轴的偏移量。同时,还解释了在支持滑动的父控件中,子控件滚动距离的获取方式。

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

先看一张图片(网上找的)
这里写图片描述

第一种是在onTouchEvent中
event.getX():表示的是触摸的点距离自身左边界的距离
event.getY():表示的是触摸的点距离自身上边界的距离
event.getRawX:表示的是触摸点距离屏幕左边界的距离
event.getRawY:表示的是触摸点距离屏幕上边界的距离

第二种是在View中
view.getTop():子View的顶部到父View顶部的距离
view.getRight():子View的右边界到父View的左边界的距离
view.getBottom():子View的底部到父View的顶部的距离
view.getLeft():子View的左边界到父View的左边界的距离
这四个值与父控件的padding和子控件的margin无关,不管这两个属性设置多少,四个值始终是子、父控件的边界差,认准边界即可。

view.getTranslationX():计算的是该View在X轴的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。
view.getTranslationY():计算的是该View在Y轴的偏移量。初始值为0,向上偏移为负,向下偏移为正。
view.getX=view.getTranslationX()+view.getLeft()
view.getY=view.getTranslationY()+view.getTop()

这里写图片描述
通过属性动画将子控件向右移动a(a>0)的距离之后,view.getLeft()的值没变,view.getTranslationX=a,view.getX=view.getTranslationX()+view.getLeft(),即增加了a。

第三种是在支持滑动的父控件中
需要说明的一点是:当屏幕滑动时,并不是父控件在移动,而是父控件中的子控件在移动(view表示父控件)
view.getScrollX:父控件中的子控件在x方向上的滚动距离
view.getScrollY:父控件中的子控件在y方向上的滚动距离

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值