我的资产文件夹中有一些 SVG,我需要在我的小部件(在 ImageView 上)中动态设置它们。
我正在使用这个库:http ://code.google.com/p/svg-android/
这个库返回一个 Picture 或 PictureDrawable。
我可以看到在 RemoteViews 上使用的唯一方法是 setImageViewBitmap,它显然需要一个位图。
我尝试寻找将 Drawable 转换为 Bitmap 的代码,如下所示:
PictureDrawable pictureDrawable = svg.createPictureDrawable();
Bitmap bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(), pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawPicture(pictureDrawable.getPicture());
currentBitmap = bitmap;
但是位图太小了。当我在 Illustrator 中创建位图时,我将画板大小设置为 65,这是内在宽度/高度上的值。
我的小部件可以调整大小,因此 ImageView 大小是可变的。即使我将宽度和高度静态设置为像这样的大数字......
Bitmap bitmap = Bitmap.createBitmap(300, 300, Config.ARGB_8888);
然后生成的位图在一个小图像的下方和右侧只有一堆空白。
我想我需要以某种方式以放大的值绘制图片以及创建大小为 300 的位图。理想情况下,我可以在运行时计算出 ImageView 的大小并设置适当大小的位图(如果我知道的话)。这是最好的方法吗?我该怎么做?也许有更好的方法我什至不知道?