从 Widget remoteView 中的资产加载图像

Load Images from Assets in Widget remoteView

我正在使用以下代码将我的图像加载到 Android 小部件 ImageView:

remoteViews.setImageViewResource(R.id.widget_image, R.drawable.image);

我必须将图像保存在 drawable 文件夹中。是否可以将图像保存在资产中并将其加载到 remoteView?

使用 BitmapFactory,您可以从 AssetManager 提供的 InputStream 加载 assets/ 中的图像作为 Bitmap,然后使用 RemoteViews#setImageViewBitmap() 方法在您的小部件上进行设置。

例如:

RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
...

try {
    InputStream is = context.getAssets().open("image.jpg");
    Bitmap bmp = BitmapFactory.decodeStream(is);

    remoteViews.setImageViewBitmap(R.id.widget_image, bmp);
}
catch (IOException e) {
    e.printStackTrace();
}

解决方法如下:

 imageView = (ImageView)findViewById(R.id.iv);
        try {
            // get input stream
            InputStream ims = getAssets().open("download.jpg");
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            imageView.setImageDrawable(d);
        }
        catch(IOException ex) {
            return;
        }