远程视图中的旋转图像

时间:2013-01-02 06:00:43

标签: android bitmap backwards-compatibility android-appwidget remoteview

我正在制作一个电池小部件,并且为了避免在不同的级别上有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大得多。有没有办法可以完全避免使用位图?

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助:

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

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