Android:如何在设置固定大小时找到SurfaceView触摸位置?

时间:2017-09-11 02:59:00

标签: android surfaceview

我有一个用于Android游戏开发的SurfaceView,其holder.setFixedSize(1280, 720);。添加了几个精灵。我想在精灵触摸时做一些动作。以下是我的SurfaceView.onTouch代码,其中我获得了x and y屏幕的值,而不是表面视图XY。

请帮我找出表面视图的实际XY。

@Override
public boolean onTouch(View view, MotionEvent event) {
    int x = (int) event.getX();
    int y = (int) event.getY();

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: {
            if (scenes.size() > 0) {
                Scene scene = scenes.get(scenes.size() - 1);
                if (scene != null) {
                    int size = scene.getSprites().size();
                    Log.i(TAG, "Surface Touched. size : " + size);
                    for (int j = size - 1; j >= 0; j--) {
                        Sprite s = scene.getSprites().get(j);
                        if (s.isTouchable() && s.performTouch(x, y)) {
                            Log.i(TAG, "Touch handled by sprite");
                            return true;
                        }
                    }
                }
            }

            break;
        }
        case MotionEvent.ACTION_MOVE: {

            break;
        }
    }

    return false;
}

1 个答案:

答案 0 :(得分:1)

更改xy的计算,如下所示:

int x = (int) (event.getX() * 1280 / view.getWidth());
int y = (int) (event.getY() * 720 / view.getHeight());