gpt4 book ai didi

android - 将图片设置到 RemoteViews

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:38 25 4
gpt4 key购买 nike

我的 Assets 文件夹中有一些 SVG,我需要在我的小部件(在 ImageView 上)中动态设置它们。

我正在使用这个库:http://code.google.com/p/svg-android/

此库返回图片或 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 的大小并设置适当大小的位图(如果我知道的话)。这是最好的方法吗?我该怎么做?也许还有我什至不知道的更好方法?

最佳答案

我没有使用过 android-svg 但如果它使用的是普通的 PictureDrawable,那么它应该只是不使用内在边界的问题。

尝试以下操作:

PictureDrawable pictureDrawable = svg.createPictureDrawable();
Bitmap bitmap = Bitmap.createBitmap(300, 300, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
pictureDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
pictureDrawable.draw(canvas); // do not access the Picture directly, that defeats the purpose
currentBitmap = bitmap;

简而言之,使用 Drawable,而不是它的 Picture,并将 Drawable 的边界设置为整个 Canvas 。

关于android - 将图片设置到 RemoteViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15051655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com