- はい、テーブルレイアウトは、この種のレイアウト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>