从资源文件夹加载图像
我正在尝试从asset
文件夹中加载图像,然后将其设置为ImageView
。 我知道如果我使用R.id.*
这样做会R.id.*
,但前提是我不知道图像的id。 基本上,我试图通过文件名dynamic加载图像。
例如,我随机检索database
代表“牛”的元素,现在我的应用程序将通过ImageView
显示“牛”的ImageView
。 database
所有元素也是如此。 (假设是,每个元素都有一个等价的图像)
提前致谢。
编辑
忘了问题,我如何从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);