从Uri检索可绘制资源

Dan*_*ali 19 android uri android-drawable

我以这种方式将可绘制资源路径存储在Uri中:

Uri uri = Uri.parse("android.resource://my_app_package/drawable/drawable_name");
Run Code Online (Sandbox Code Playgroud)

如何获得uri引用的Drawable?

我不想把它放在ImageView中,只需检索Drawable(或Bitmap)对象.

psk*_*ink 51

getContentResolver cr object 然后打电话:

is = cr.openInputStream(uri) 
Run Code Online (Sandbox Code Playgroud)

最后打电话给:

Drawable.createFromStream(InputStream is, String srcName)
Run Code Online (Sandbox Code Playgroud)

...这是一个实际的工作代码示例,您可以自己查看:

try {
    InputStream inputStream = getContentResolver().openInputStream(yourUri);
    yourDrawable = Drawable.createFromStream(inputStream, yourUri.toString() );
} catch (FileNotFoundException e) {
    yourDrawable = getResources().getDrawable(R.drawable.default_image);
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:您可能还必须调用“yourDrawable.setBounds(...)”,在某些情况下,例如将其设置为“TextView”的复合可绘制对象 (2认同)