Android棋盘游戏实施

时间:2013-08-20 14:26:27

标签: android button tablelayout

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

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

问题:

  • 桌面布局是实现我的主板的正确方法吗?
  • 我应该在电路板上的每个空间使用图像按钮吗?
  • 什么是旋转我的作品的最佳方法?我应该在整个游戏中使用画布方法吗?

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

1 个答案:

答案 0 :(得分: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>