Android将视图移动到触摸位置

时间:2015-08-04 13:45:05

标签: android move ontouchevent touch-event

我正在尝试开发一个类似于"的颜色测量的Android应用程序"或者"颜色抓取"已经在谷歌播放。 我在获取视图的确切位置(其作用类似于焦点方块)并将其移动到用户触摸屏幕的位置时遇到问题。我已经做了很多搜索但是所有这些搜索都以onTouchEvent()结束,我使用它但是它没有正常工作或者我做错了。 实际上视图会移动,但它不会准确地放置在用户触摸的位置,它将在y轴上的触摸区域下方移动一段距离。

这是我的代码,其中mFocusRectangle是我要移动到触摸位置的自定义视图:

@Override
public boolean onTouchEvent(MotionEvent event) {

    int action = event.getAction();
if (event.getPointerCount() > 1) {
        // handle multi-touch events

    } else {
        // handle single touch events
        if(action==MotionEvent.ACTION_DOWN){

        }
        if (action == MotionEvent.ACTION_UP) {
            int pointerId = event.getPointerId(0);
            int pointerIndex = event.findPointerIndex(pointerId);
            // Get the pointer's current position
            float x = event.getX(pointerIndex);
            float y = event.getY(pointerIndex);
            mFocusRectangle.showStart();
            mFocusRectangle.setX(x);
            mFocusRectangle.setY(y);

        }
    }
    return true;
}

我也尝试了MotionEvent.ACTION_DOWN,但结果是一样的。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个

float x = event.getX(pointerIndex) - (mFocusRectangle.getWidth() / 2);
float y = event.getY(pointerIndex) - (mFocusRectangle.getHeight() / 2);

币: 曼尼托巴省 - Android move view on touch event