我正在尝试在ImageView上实现某种拖放功能。除了一件事,它的工作并不算太糟糕: 当我开始拖动对象时,ImageView有轻微的转变,我无法解决此问题。 例如,当我触摸视图时,我会使用logcat:
ACTION_DOWN(保证金):12x300 然后(没有移动) ACTION_MOVE :(保证金)12x245
所以wiew是立即重绘的,它不是很漂亮! 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;
}
有人能指出我做错了什么吗? 感谢。
答案 0 :(得分:1)
我有一个问题,看起来有点类似。我通过将imageView的layoutParams上的重力设置为Gravity.NO_GRAVITY来解决它。