簡體   English   中英

如何通過在 Android 中拖動來在屏幕上移動對象?

[英]How can I move an object around the screen by dragging in Android?

所以在我的布局中,我有一個我想在屏幕上拖動的球。 我嘗試使用 onTouch() 方法,這些是我的結果:
1) ((Button)findViewById(R.id.ball)).setY(event.getY());
((Button)findViewById(R.id.ball)).setX(event.getX());
由於某種原因,這個非常有問題。 我試着移動球,但它很快在兩個不同的地方來回移動。
2) ((Button)findViewById(R.id.ball)).setY(event.getRawY());
((Button)findViewById(R.id.ball)).setX(event.getRawX());
這個工作得更順暢一些,但是當我開始運動時,球只是傳送到其他地方。 它工作正常,除了它“傳送”的那部分

我想要達到的目標:
球在手指正下方的正常拖動運動(球的 x 和 y 坐標與觸摸的 x 和 y 坐標匹配)

如果需要,我可以添加解釋上述兩種情況的屏幕錄像

首先讓你的活動實現View.OnTouchListener並導入請求的方法:

public class MyActivity extends AppCompatActivity implements View.OnTouchListener {}

然后更改新創建的onTouch方法,如下所示:

float dX, dY;

@Override
public boolean onTouch(View view, MotionEvent event) {

switch (event.getAction()) {

    case MotionEvent.ACTION_DOWN:

        dX = view.getX() - event.getRawX();
        dY = view.getY() - event.getRawY();
        break;

    case MotionEvent.ACTION_MOVE:

        view.animate()
                .x(event.getRawX() + dX)
                .y(event.getRawY() + dY)
                .setDuration(0)
                .start();
        break;
    default:
        return false;
}
return true;
}

最后將此onTouch方法設置為您的視圖:

ball.setOnTouchListener(this);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM