【问题标题】:How can I set any view to the middle of my touch position?如何将任何视图设置为触摸位置的中间?
【发布时间】:2021-01-05 22:07:00
【问题描述】:

如何使用 onTouchEvent 将任何视图设置为触摸位置的中间?

红圈是我的点击位置

Black Circle 是 View Like Button、ImageView 等...

有人可以举个例子吗?

编辑

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        imgCircle.setX(event.getX() - imgCircle.getWidth() / 2);
        imgCircle.setY(event.getY() - imgCircle.getHeight() / 2);
    }
    return false;
}

【问题讨论】:

    标签: android


    【解决方案1】:

    解决方案示例:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();
        yourView.setX(x);
        yourView.setY(y);
        return false;
    }
    

    您通过点击获取坐标并将它们设置到视图中。如果一个视图中有多个视图,则可能需要获取父视图的相对位置,然后从父视图中减去点击位置。

    如果要将视图位置设置为中心,只需从 x 中减去一半视图宽度,从 y 中减去一半高度。

    编辑

    如何将位置设置为视图中心:

    yourView.setX(x-yourView.getWidth()/2);
    yourView.setY(y-yourView.getHeight()/2);
    

    【讨论】:

    • 关于这段代码,我之前已经测试过了,但不像上图中我想要的那样。
    • 如果要将视图位置设置为中心,只需从 x 中减去一半视图宽度,从 y 中减去一半高度。 - 我该怎么做?
    • @K921 添加并编辑到我的帖子中,我会更好地解释。
    • 你能解释一下到底是什么不工作吗?
    • 当我触摸屏幕时,图像出现在我的手指下,而不是在中间。
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多