0

所以我正在创建一个棋盘游戏,它使用一个 9x9 棋盘,边缘/角和棋盘中间有不同的图像。经过大量研究后,人们似乎建议为板上的每个单独空间使用带有按钮或图像按钮的 TableLayout。

我想知道的是,在我的游戏中,棋子也可以每转 45 度。我最初的计划是简单地将这些碎片作为 imageButton 的一部分,但我不确定如何旋转它。我能想到的一种选择是简单地为每个 45 度旋转提供一个单独的图像,但这似乎非常低效,因为每块需要 8 个图像。

问题:

  • 表格布局是实现我的板的正确方法吗?
  • 我应该为板上的每个空间使用图像按钮吗?
  • 旋转我的作品的最佳方式是什么?我应该为整个游戏使用画布方法吗?

谢谢,如果有什么不清楚的地方请告诉我。

4

1 回答 1

1
  • 是的表格布局是这种布局IMO的好方法
  • 如果您必须推送图像,您可以使用 ImageButtons,否则只需使用 ImageView。
  • 您可以通过以下方式旋转可绘制对象。

    private void updateImageOrientation(final float rotationAngle) {
    
      // rotate compass to right orientation
      final ImageView img = (ImageView) findViewById(R.id.actMyDrawableImage);
      // only if imageView in layout
    
      if (img != null) {
        final Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.act_my_drawable);
        // Getting width & height of the given image.
        final int w = bmp.getWidth();
        final int h = bmp.getHeight();
        // Setting post rotate to rotation angle
        final Matrix mtx = new Matrix();
        // Log.v(LOG_TAG, "Image rotation angle: " + rotationAngle);
        mtx.postRotate(rotationAngle, (float) (w / 2.0), (float) (h / 2.0));
        // Rotating Bitmap
        final Bitmap rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
        final BitmapDrawable bmd = new BitmapDrawable(getResources(), rotatedBMP);
    
        img.setImageDrawable(bmd);
      }
    
    }
    

编辑 1

要使用 ImageButton,只需在上面的代码中用 ImageButton 替换 ImageView。

final ImageButton img = (ImageButton) findViewById(R.id.actMyDrawableImage);

img.setImageDrawable(drawable)

编辑 2

要将您的作品展示在您的板上,您可以为每个单元格使用 FrameLayout。背景将被设置:

  • 使用 ImageView 如下
  • 在 FrameLayout (android:background) 上有一个背景标志
  • 如果你想为你的董事会提供一个背景,在父 TableLayout 上有一个背景标志

您可以以编程方式使您的作品可见/不可见:

img.setVisibility(View.VISIBLE);

img.setVisibility(View.INVISIBLE);

<FrameLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/actMyDrawableButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible" >
    </ImageView>

    <ImageButton
        android:id="@+id/actMyDrawableButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="invisible" >
    </ImageButton>
</FrameLayout>
于 2013-08-20T14:44:20.510 回答