android view ontouch view 颤抖

今天写demo时遇到一个现象

在代码是这样:

child.setOnTouchListener(new OnTouchListener() {


@Override
public boolean onTouch(View v, MotionEvent event) {
if (v == child) {
System.out.println(true);
}
System.out.println("event.getX()=" + event.getX()
+ "   event.getRawX()=  " + event.getRawX());
child.layout((int) event.getX(), (int) event.getY(),
(int) event.getX() + child.getMeasuredWidth(),
(int) event.getY() + child.getMeasuredHeight());
return true;
}
});


结果是 child不断地颤抖 出现在屏幕的两个地方



原因是:

getX getY获取的是相对于child 左上角点的 x y  当第一次获取的时候通过layout设置了child一个新的位置 马上 再次获取x y时就会变了 变成了 新的x y 然后马上layout 然后又获取了新的x y又。。。。所以会看到 一个view不断地在屏幕上闪来闪去

正确的做法是event.getRawX getRawY 获取相对于屏幕的x y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值