我正在尝试在 ImageView 上实现某种拖放。除了一件事,它的工作还不错:当我开始拖动对象时,ImageView 有轻微的变化,我无法解决这个问题。例如,当我触摸视图时,我进入 logcat :
ACTION_DOWN(边距):12x300 然后(不移动) ACTION_MOVE:(边距)12x245
所以视图立即重绘,它不是很漂亮!ACTION_DOWN 和 ACTION_MOVE 之间的 Y 轴偏移量似乎取决于位图。
这是我的 onTouch 事件代码:
布局左边距和上边距在屏幕上设置。
public boolean onTouch(View v, MotionEvent event) {
FrameLayout.LayoutParams layout = (LayoutParams) v.getLayoutParams();
if (layout != null){
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d( tag, "ACTION_DOWN (margin) : " + layout.leftMargin + "x" + layout.topMargin);
// finger position on current view
localX = (int) event.getX();
localY = (int) event.getY();
// initial position
parentX = (int) event.getRawX();
parentY = (int) event.getRawY();
v.bringToFront();
Log.d(tag, "ACTION_DOWN : Local " + localX + "x" + localY);
Log.d(tag, "ACTION_DOWN : Raw " + parentX + "x" + parentY);
}
else if (event.getAction() == MotionEvent.ACTION_MOVE) {
// move current view on screen
layout.leftMargin = (int) event.getRawX() - localX;
layout.topMargin = (int) event.getRawY() - localY;
Log.d(tag, "ACTION_MOVE : (margin) " + layout.leftMargin+ "x" + layout.topMargin);
v.setLayoutParams(layout);
}
}
return true;
}
有人能指出我做错了什么吗?谢谢。