1

我想知道如何在我的 SurfaceView 类上找到哪个特定图像被触摸,它有四个不同的图像从一个角落移动到另一种轮盘赌风格???

我计划为每张图片启动不同的活动。

-谢谢你的帮助。

4

1 回答 1

1

据我所知(仍然有点 n00b),没有用于Canvas. 所以我所做的是Rect在每个图像或位图的尺寸上创建一个。这是我正在做的游戏项目中用于角色控制的屏幕上画布绘制的 d-pad 示例:

public class World extends Activity implements OnTouchListener {

Rect viewRect;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    viewImage1 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
            getResources(), R.drawable.left_key), 50, 50,
            true);

    viewImage2 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
            getResources(), R.drawable.right_key), 50, 50,
            true);
                                //left,top,right,bottom
    viewRect1 = new Rect(viewImage1X, viewImage1Y, viewImage1X+viewImage1Width,
            viewImage1Y+viewImage1Height);

                               //left,top,right,bottom
    viewRect2 = new Rect(viewImage2X, viewImage2Y, viewImage2X+viewImage2Width,
            viewImage2Y+viewImage2Height);

然后在您的 onTouch() 方法中:

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

    int x = (int) event.getX();
    int y = (int) event.getY();

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:

        // Rectangle surrounding your view1 is touched
        if (x <= viewRect1.right && x >= viewRect1.left
                && y >= viewRect1.top && y <= viewRect1.bottom) {
                    // Example Activity:
                    Intent intent = new Intent("com.example.Activity");
                    startActivity(intent);

            }

                    // Rectangle surrounding your view2 is touched
               //if onTouch was NOT in viewRect1, check here. Otherwise will be disregarded
        else if (x <= viewRect2.right && x >= viewRect2.left
                && y >= viewRect2.top && y <= viewRect2.bottom) {
                    // Example Activity:
                    Intent intent = new Intent("com.example.Activity2");
                    startActivity(intent);

            }

        break;
    }
    return true;
}
于 2013-08-16T23:31:43.873 回答