0

そこで、エッジ/コーナーとボードの中央に異なる画像を持つ 9x9 ボードを使用するボード ゲームを作成しています。多くの調査を行った後、人々は、ボード上の個々のスペースごとにボタンまたは imageButtons を備えた TableLayout を使用することを推奨しているようです。

私が不思議に思っているのは、私のゲームでは、駒を 45 度ずつ回転させることもできるということです。私の当初の計画は、単純に imageButton の一部としてピースを配置することでしたが、どのように回転させることができるかわかりません。私が考えることができる 1 つのオプションは、単純に 45 度の回転ごとに個別の画像を持つことですが、これは 1 ピースあたり 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 を使用するには、上記のコードで ImageView を ImageButton に置き換えるだけです。

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

img.setImageDrawable(drawable)

編集 2

ボードの上にピースを表示するには、各セルに FrameLayout を使用できます。背景は次のように設定されます。

  • 以下のように ImageView を使用する
  • FrameLayout の背景フラグ (android:background)
  • 親の TableLayout に背景フラグがあるボードの背景が 1 つ必要な場合

プログラムでピースを表示/非表示にすることができます:

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 に答える