所以我正在创建一个棋盘游戏,它使用9x9棋盘,边缘/角落和棋盘中间有不同的图像。经过大量研究后,人们似乎建议在电路板上为每个单独的空间使用带有按钮或imageButtons的TableLayout。
我想知道的是,在我的游戏中,棋子每回合也可以旋转45度。我最初的计划是将这些碎片作为imageButton的一部分,但我不确定如何旋转它。我能想到的一个选择就是每个45度旋转只需要一个单独的图像,但这似乎非常低效,因为每件需要8张图像。
问题:
谢谢,如果有任何不清楚的地方,请告诉我。
答案 0 :(得分:1)
您可以通过以下方式旋转绘图。
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。背景将设置:
您可以以编程方式使您的作品可见/不可见:
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>