视图稍微改变了touchevent

时间:2013-10-01 18:50:41

标签: android user-interface drag-and-drop

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

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

1 个答案:

答案 0 :(得分:1)

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