从资源文件夹加载图像

我正在尝试从asset文件夹中加载图像,然后将其设置为ImageView 。 我知道如果我使用R.id.*这样做会R.id.* ,但前提是我不知道图像的id。 基本上,我试图通过文件名dynamic加载图像。

例如,我随机检索database代表“牛”的元素,现在我的应用程序将通过ImageView显示“牛”ImageViewdatabase所有元素也是如此。 (假设是,每个元素都有一个等价的图像)

提前致谢。

编辑

忘了问题,我如何从asset文件夹加载图像?

如果你知道代码中的文件名,调用这个不会是一个问题:

 ImageView iw= (ImageView)findViewById(R.id.imageView1); int resID = getResources().getIdentifier(drawableName, "drawable", getPackageName()); iw.setImageResource(resID); 

您的文件名将与drawableName名称相同,因此您不必处理资产。

检出这个代码 。 在本教程中,您可以find如何从资源文件夹加载图像。

//加载图片

 try { // get input stream InputStream ims = getAssets().open("avatar.jpg"); // load image as Drawable Drawable d = Drawable.createFromStream(ims, null); // set image to ImageView mImage.setImageDrawable(d); ims .close(); } catch(IOException ex) { return; } 

这个给你,

  public Bitmap getBitmapFromAssets(String fileName) { AssetManager assetManager = getAssets(); InputStream istr = assetManager.open(fileName); Bitmap bitmap = BitmapFactory.decodeStream(istr); return bitmap; } 

其中一些答案可能会回答这个问题,但我从来不喜欢其中的任何一个,所以我最终写了这个,这是我帮助社区。

从资产获取Bitmap

 public Bitmap loadBitmapFromAssets(Context context, String path) { InputStream stream = null; try { stream = context.getAssets().open(path); return BitmapFactory.decodeStream(stream); } catch (Exception ignored) {} finally { try { if(stream != null) { stream.close(); } } catch (Exception ignored) {} } return null; } 

从资产获取Drawable

 public Drawable loadDrawableFromAssets(Context context, String path) { InputStream stream = null; try { stream = context.getAssets().open(path); return Drawable.createFromStream(stream, null); } catch (Exception ignored) {} finally { try { if(stream != null) { stream.close(); } } catch (Exception ignored) {} } return null; } 
 WebView web = (WebView) findViewById(R.id.webView); web.loadUrl("file:///android_asset/pract_recommend_section1_pic2.png"); web.getSettings().setBuiltInZoomControls(true);