Android 旋转位图并保持大小
我正在创建一个瓷砖板游戏。 我想将位图平铺块旋转几个预定角度。Android 旋转位图并保持大小,android,Android,我正在创建一个瓷砖板游戏。 我想将位图平铺块旋转几个预定角度。 旋转位图时,大小会发生变化。 例如,如果我想要一块75x75的三角形瓷砖,在旋转时,我从代码中得到一块68x68。我怎样才能保持事物的大小不变,使所有事物都保持董事会的大小 下面是我用来旋转的: public class RotatebitmapActivity extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(
旋转位图时,大小会发生变化。
例如,如果我想要一块75x75的三角形瓷砖,在旋转时,我从代码中得到一块68x68。我怎样才能保持事物的大小不变,使所有事物都保持董事会的大小 下面是我用来旋转的:
public class RotatebitmapActivity extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
LinearLayout linLayout = new LinearLayout(this);
// load the origial BitMap (500 x 500 px)
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
R.drawable.t123);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
int newWidth = 75;
int newHeight = 75;
// calculate the scale - in this case = 0.4f
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// createa matrix for the manipulation
Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(scaleWidth, scaleHeight);
// rotate the Bitmap
matrix.postRotate(120);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
width, height, matrix, true);
// make a Drawable from Bitmap to allow to set the BitMap
// to the ImageView, ImageButton or what ever
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
ImageView imageView = new ImageView(this);
// set the Drawable on the ImageView
imageView.setImageDrawable(bmd);
// center the Image
imageView.setScaleType(ScaleType.CENTER);
// add ImageView to the Layout
linLayout.addView(imageView,
new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT
)
);
// set LinearLayout as ContentView
setContentView(linLayout);
}
代码中出现的情况是,创建的位图大小正确。但是,所有位图都会自动缩放以适应当前使用的屏幕密度 有两种方法(我知道)可以得到你想要的结果
希望有人能比我更好地回答您的问题。代码中发生的事情是,创建的位图大小正确。但是,所有位图都会自动缩放以适应当前使用的屏幕密度 有两种方法(我知道)可以得到你想要的结果
希望有人能比我更好地回答你的问题。没什么不同。无论是否使用最小设置,imageView仍为68x68。FIT_XY简单地将整个imageView缩放到全屏它与imageView无关-它是位图。当位图调整大小并旋转时,它的大小不正确。在ImageView上使用wrap内容只会被映射到其当前(不正确)大小。例如,如果我有一个150x150位图,希望它减少到75x75并旋转,在上面的代码中,resizedBitmap从createBitmap以102x102显示。然后,新的位图绘制工具bmd将由此创建,它是68x68。我不知道如何旋转一个物体,并保持瓷砖的大小不变——眼睛、机器人的比例。但是如果你指定你想要的尺寸,即75,你不应该得到75而不是68吗?仅仅让它返回任意大小是没有意义的。数字75仅用于举例说明。在实际代码中,只要我在旋转后得到与我输入的相同的大小,我就不会在意它。这是我帖子的原始问题-如何旋转位图并保持相同的大小?我删除了所有的评论并更新了我的答案(希望)对@Martin和任何其他看到它的人来说都更有意义和帮助。没有任何区别。无论是否使用最小设置,imageView仍为68x68。FIT_XY简单地将整个imageView缩放到全屏它与imageView无关-它是位图。当位图调整大小并旋转时,它的大小不正确。在ImageView上使用wrap内容只会被映射到其当前(不正确)大小。例如,如果我有一个150x150位图,希望它减少到75x75并旋转,在上面的代码中,resizedBitmap从createBitmap以102x102显示。然后,新的位图绘制工具bmd将由此创建,它是68x68。我不知道如何旋转一个物体,并保持瓷砖的大小不变——眼睛、机器人的比例。但是如果你指定你想要的尺寸,即75,你不应该得到75而不是68吗?仅仅让它返回任意大小是没有意义的。数字75仅用于举例说明。在实际代码中,只要我在旋转后得到与我输入的相同的大小,我就不会在意它。这是我帖子的原始问题-如何旋转位图并保持相同的大小?我删除了所有评论并更新了我的答案(希望)对@Martin和任何其他看到它的人都更有意义和帮助。检查我的答案[此处][1],毫无问题地工作[1]:检查我的答案[此处][1],毫无问题地工作[1]: