0

我正在尝试在 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;
}

有人能指出我做错了什么吗?谢谢。

4

1 回答 1

1

我有一个问题,这似乎有点相似。我通过将 imageView 的 layoutParams 上的重力设置为 Gravity.NO_GRAVITY 来解决它。

于 2013-10-14T11:22:34.477 回答