0

我正在制作一个电池小部件,为了避免不同级别有 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 次超过了活页夹限制,我得到了!Binder 交易失败!!!我生成的一个位图可以很好地发送,我觉得我需要一种方法以某种方式将我的一个大交易分成 20 个单独的交易。必须有办法绕过这个限制,这样我才能在 Android 2.x 上支持我的用户。有什么想法吗?

我必须补充一点,我正在修改的原始 PNG 文件在磁​​盘上是 903 字节。我的超出绑定限制的交易是 1,271,808 字节。我假设这是因为生成 Bitmap 对象实际上是创建了一个 BMP 文件,它的大小当然比 PNG 大得多。有没有办法完全避免使用位图?

4

1 回答 1

0

也许这可以帮助:

这是在可用的小活页夹限制内完成工作的解决方法。

https://groups.google.com/forum/#!topic/android-developers/KKEyW6XdDvg/discussion

于 2013-01-02T06:10:19.110 回答