android - 为什么onTouch事件的event.getRawX() 等参数使用强转到int反而更准确了
本文介绍了android - 为什么onTouch事件的event.getRawX() 等参数使用强转到int反而更准确了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
为什么onTouch事件的event.getRawX() 等参数使用强转到int反而更准确了
mImageView.setOnTouchListener(new View.OnTouchListener() {
private int mStartX;
private int mStartY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
mStartX = (int) event.getRawX();
mStartY = (int) event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int newX = (int) event.getRawX();
int newY = (int) event.getRawY();
int moveX = newX - mStartX;
int moveY = newY - mStartY;
mParams.x += moveX;
mParams.y += moveY;
mStartX = (int) event.getRawX();
mStartY = (int) event.getRawY();
mWindowManager.updateViewLayout(mImageView,mParams);
break;
case MotionEvent.ACTION_UP:
Toast.makeText(RocketService.this, "asdgasds", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
解决方案
因为强转损失了精度
这篇关于android - 为什么onTouch事件的event.getRawX() 等参数使用强转到int反而更准确了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文