首页 > 代码库 > 加载ImageView的图片
加载ImageView的图片
最近遇到了一个问题,当写一个自定义属性控件的时候,设置的属性传入的图片可以改变。
自定义属性的方法:http://blog.csdn.net/forwardyzk/article/details/25079743
开始的思路是:自定义的属性为integer类型,那么调用处写如对应图片在res下的id,但是当clean的时候,这个id有可能会改变,所以不能传入id。
所以现在更改为:在设置的自定义属性的地方传入res下对应图片的名字,那么再加载此图片,但是遇到了问题,没有方法直接通过名字来获取对应图片的对象。
下面就介绍加载不同位置的图片的方法。
第一种:加载Sdcard下的图片
private void getImageFromSdcard(String name) { String imageDir = Environment.getExternalStorageDirectory().getPath(); String imagePath = imageDir + "/" + name; File file = new File(imageDir); if (!file.exists()) { file.mkdirs(); } iv.setImageBitmap(BitmapFactory.decodeFile(imagePath)); }
第二种:加载src目录下的图片
com.example.drawable包下的一个src_d.jpg图片
String path = "com/example/drawable/src_d.jpg"; // 图片存放的路径 InputStream is = getClassLoader().getResourceAsStream(path); // 得到图片流 iv.setImageBitmap(BitmapFactory.decodeStream(is));
iv.setImageResource(R.drawable.res_d);
第四种:通过名字加载res目录下的图片
/** * 这种先通过名字获取id,然后在通过id获取流。最后加载图片 * * 例如:你自定义了属性,如果你传入Id的话,每次更新可能会变化的。所以传入名字比较好 * * 但是又遇到了问题,传入名字怎样获取图片呢,那么就通过这个方法获取对应的图片,然后加载 */ public void loadImageByName(String name) { ApplicationInfo appInfo = getApplicationInfo(); // 得到该图片的id(name 是该图片的名字,"drawable" // 是该图片存放的目录,appInfo.packageName是应用程序的包) int resID = getResources().getIdentifier(name, "drawable", appInfo.packageName); iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), resID)); }
源码下载:http://download.csdn.net/detail/forwardyzk/8311677
加载ImageView的图片
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。