【问题标题】:Can't update the new position in the onTouch event无法更新 onTouch 事件中的新位置
【发布时间】:2016-08-24 15:28:55
【问题描述】:

我是初学者,但我想创建一个游戏。现在我正在为我的英雄做移动功能。当我触摸图像并将其移动到右侧时,英雄将以每秒 100dp 的速度从原始位置移动到右侧,但它无法工作。

以下是我用作移动功能的代码:

public View.OnTouchListener move = new View.OnTouchListener() {
    private float x, y;
    private int mx, my, hx, hy;

    public boolean onTouch(final View v, MotionEvent event) {
        if ((event.getAction() == MotionEvent.ACTION_DOWN)) {

            x = event.getX();
            y = event.getY();
            mx = (int) (event.getRawX() - x);
            my = (int) (event.getRawY() - y);

        } else if ((event.getAction() == MotionEvent.ACTION_MOVE)) {

            hx = (int) (event.getRawX() - x);
            hy = (int) (event.getRawY() - y);
            v.layout(hx, hy, hx + v.getWidth(), hy + v.getHeight());

        } else if ((event.getAction() == MotionEvent.ACTION_UP)) {

            while (hx > mx) {
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        mx += 100;
                        v.layout(mx, my, mx + v.getWidth(), my + v.getHeight());
                    }
                }, 1000);
            }
        }
        Log.e("x =", String.valueOf(x) + "    y =" + String.valueOf(y));
        Log.e("hx =", String.valueOf(hx) + "    hy =" + String.valueOf(hy));
        Log.e("mx =", String.valueOf(mx) + "    my =" + String.valueOf(my)); 
        return true;
    }
};

【问题讨论】:

    标签: java android layout ontouch


    【解决方案1】:

    ACTION_MOVEACTION_UP 中执行此操作:

    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
    
    //edit layout params according to your need
    view.setLayoutParams(layoutParams);
    

    【讨论】:

    • 在 ACTION_MOVE 和 ACTION_UP 中执行此操作
    • 请为您的答案添加一些解释。 SO不鼓励仅使用代码的答案。谢谢。
    • 谢谢你,现在开始行动了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多