我编写了以下函数以便在屏幕上拖动 ImageView。似乎工作正常,除了拖动图像时疯狂地跳来跳去。
查看日志,问题似乎是我在每个正确值之间得到了不正确的 X 和 Y 值。我不知道为什么。谁能帮我解决这个问题吗?
hereOnTouchListener imageListener = new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int eventAction = event.getAction();
int X = (int)event.getX();
int Y = (int)event.getY();
if (eventAction == MotionEvent.ACTION_DOWN){
dragging = true;
tempParams = new RelativeLayout.LayoutParams(v.getWidth(), v.getHeight());
Log.i("v width and height", v.getWidth() + " " + v.getHeight());
}
if (eventAction == MotionEvent.ACTION_UP){
Log.i("dragging up","dragging up" + X + " " + Y);
dragging = false;
} else if (eventAction == MotionEvent.ACTION_MOVE){
if (dragging){
Log.i("dragging","dragging " + X + " " + Y);
tempParams.leftMargin = X;
tempParams.topMargin = Y;
v.setLayoutParams(tempParams);
// v.setPadding(X, Y, 0, 0);
v.invalidate();
}
}
return true;
}
};
日志输出示例:
11-27 19:43:34.484: INFO/dragging(3530): dragging 131 131
11-27 19:43:34.504: INFO/dragging(3530): dragging 84 288
11-27 19:43:34.519: INFO/dragging(3530): dragging 132 134
11-27 19:43:34.539: INFO/dragging(3530): dragging 84 292
11-27 19:43:34.554: INFO/dragging(3530): dragging 132 139
11-27 19:43:34.574: INFO/dragging(3530): dragging 84 294
11-27 19:43:34.594: INFO/dragging(3530): dragging 132 142
11-27 19:43:34.609: INFO/dragging(3530): dragging 84 294
@I82Much 我不久前也遇到过同样的问题,我也使用 getX() 方法,但将其更改为 getRawX() 并且工作正常。希望能帮助到你
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)