我正在制作一个电池小部件,并且为了避免在不同的级别上有20个单独的PNG文件,我有一个PNG,我旋转到20个位置。在Android 3.x +上这很简单,因为ImageView元素是一个旋转属性。为了向后兼容,我使用矩阵生成其他图像,如下:
if(Build.VERSION.SDK_INT < 11) {
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.battery_green);
Matrix m = new Matrix();
for(int i = 0; i < 20; i++) {
String idName = "batt_s_"+i;
int id = context.getResources().getIdentifier(idName, "id", context.getPackageName());
m.setRotate((i * 18) - 8);
Bitmap newBmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
myViews.setImageViewBitmap(id, newBmp);
}
}
然而,这不起作用,因为虽然图像本身相当小,但这样做了20次超过了活页夹限制,我得到!!!失败的粘合剂交易!!! 我生成的位图中的一个将发送得很好,我觉得我需要一种方法将我的一个大事务分成20个单独的事务。必须有一些解决此限制的方法,以便我可以在Android 2.x上支持我的用户。有什么想法吗?
我必须补充一点,我正在修改的原始PNG文件是磁盘上的903个字节。我的交易限制是1,271,808字节。我假设这是因为生成一个Bitmap对象实际上是一个BMP文件,当然它的大小比PNG大得多。有没有办法可以完全避免使用位图?
答案 0 :(得分:0)
也许这会有所帮助:
这是在可用的小活页夹限制范围内完成工作的解决方法。
https://groups.google.com/forum/#!topic/android-developers/KKEyW6XdDvg/discussion