getRawX、getRawY与getX、getY以及View中的getScrollX、getScrollY

MotionEventgetRawX、 getRawYgetX、 getY以及View中的getScrollX
getScrollY; 以及View.getX、 View.getYView.getTranslationX
View.getTranslationY的区别
1.getRawX、 getRawYgetX、 getY的区别
在编写android的自定义控件, 或者判断用户手势操作时, 往往需要使用MotionEvent中的getRawX()、 getRawY()
getX()、 getY()取得触摸点在X轴与Y轴上的距离, 这四个方法都返回一个float类型的参数, 单位为像素( Pixel) 。
getRawX()、 getRawY()返回的是触摸点相对于屏幕的位置, 而getX()、 getY()返回的则是触摸点相对于View的位置。
以下两张图直观的表现了这几个方法的区别, 在屏幕中央放置了一个Button, 并为它注册了OnTouchListener, 图中绿圆点
为触摸点位置。

2.View中的getScrollX、 getScrollY
getScrollX()getScrollY()的值由调用ViewscrollTo(int x, int y)或者scrollBy(int x, int y)产生, 其中scrollTo是将View中的内容移
动到指定的坐标x、 y处, 此x、 y是相对于
View的左上角, 而不是屏幕的左上角。 scrollBy(int x, int y)则是改变View中的相对位置, 参数x、 y为距离上一次的相对位
置。
文字解释总是不好理解的, 那么我们就直接上图吧, 直观一些


1.1中, 屏幕中心放置了一个button, 而button的内容被放置在了它的左上角。
2.调用buttonscrollTo(-100, -100)方法, 结果如图2所示, button内的内容被移至相对button左上角(-100, -100)的位置
3.对图2button调用scrollBy(-100,-100)方法, 结果如图3所示, button内的内容被移至相对于图2(-100,-100)位置
这时的getScrollX()getScrollY()的值为:
06-15 15:44:56.072 20471-20471/com.test.yangy.studiotest V/ScrollActivity﹕ btn scroll X=-200
06-15 15:44:56.072 20471-20471/com.test.yangy.studiotest V/ScrollActivity﹕ btn scroll Y=-200
值得注意的是, 当View中的内容向右移动时, getScrollX()的值为负数, 同理, 向scrollToscrollByx中传入负数, view
的内容向右移动, 反之向左。
View中的内容向下移动时, getScrollY()的值为负数, 同理, 向scrollToscrollByy中传入负数, view中的内容向下移
动, 反之向上。

3.View中的getX、 getTranslationX的区别
view.getTranslationX计算的是该view的偏移量。初始值为0,向左偏移值为负,向右偏移值为正。
view.getX相当于该view距离父容器左边缘的距离,等于getLeft+getTranslationX。
示意图:

3.获取View在窗口中的位置
int[] position = newint[2];
view.getLocationInWindow(position);
y=position[1]
数组的两个值分别为ViewX,Y坐标;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值