【发布时间】:2013-01-04 21:28:49
【问题描述】:
我正在尝试从一个图像的 20 个副本中构建一个环,这是整个环的 1/20 切片。我生成的位图是将原始图像旋转到正确的度数。原始图像是一个 130x130 的正方形
生成旋转切片的代码如下所示:
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.battery_green);
FileOutputStream fos;
for(int i = 0; i < 20; i++) {
String idName = "batt_s_"+i;
Matrix m = new Matrix();
m.setRotate((i * 18)-8, bmp.getWidth()/2, bmp.getHeight()/2);
Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
try {
fos = context.openFileOutput(idName+"_"+color+".png", Context.MODE_WORLD_READABLE);
newBmp.compress(CompressFormat.PNG, 100, fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
m.reset();
BattConfigureSmall.saveInitPref(context, true);
}
这些生成的位图最终插入的 ImageView 在其 XML 中都有 scaleType="center"。但是,生成的输出如下所示:
不完全是完美的戒指。如果旋转正确,切片本身会形成完美的环,因为在 API 级别 11 及更高级别中,我在这些 ImageView 上使用 android:rotate XML 属性,但我还需要支持 API 级别 7-10,所以可以有人给我一些建议吗?谢谢。
【问题讨论】:
-
使用图像而不是画弧线有什么特别的原因吗?这对我来说似乎更容易。
-
我有一点发光效果,就创意控制而言,我通常更喜欢使用图像文件。更不用说我已经在 Android 3.x 及更高版本上完成了所有工作。
标签: android matrix bitmap rotation