一、ImageView设置图片的各种方法
1、setImageResource(int resId)
示例代码:
imageView1.setImageResource(R.mipmap.ic_launcher);
2、setImageDrawable(Drawable drawable)
示例代码:
imageView2.setImageDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
3、setImageBitmap(Bitmap bm)
示例代码:
imageView3.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
4、setImageIcon(Icon icon)
示例代码:
Android6.0(API23)以上才可以使用这个方法
imageView4.setImageIcon(Icon.createWithResource(this, R.mipmap.ic_launcher));
5、setImageURI(Uri uri)
示例代码:
imageView5.setImageURI(Uri.fromFile(new File(sdPath)));
二、获取图片资源的N种方法
1、利用resource ID直接获取
最简单的方法
R.mipmap.ic_launcher
2、已知resource目录下图片名称,如何获取图片
两种方法:
1.利用getIdentifier(String name, String defType, String defPackage)获取资源标识ID
/**
* 已知获取图片名称获取图片的资源id的方法
*
* @param imageName
* @return resourceID
*/
public int getImageFromResourceByName(String imageName) {
Context context = getBaseContext();
int resId = getResources().getIdentifier(imageName, "mipmap", context.getPackageName());
return resId;
}
2.利用Java反射方法
/**
* 利用反射方法
* 已知图片名称获取图片的资源id的方法
*
* @param imageName
* @return resourceID
*/
public int getImageFromResourceByReflect(String imageName) {
Class drawable = R.mipmap.class;
Field field = null;
int r_id;
try {
field = drawable.getField(imageName);
r_id = field.getInt(field.getName());
} catch (Exception e) {
r_id = R.mipmap.ic_launcher;
Log.e("ERROR", "PICTURE NOT FOUND!");
}
return r_id;
}
3、从SD卡获取图片
/**
* 从SD卡获取图片
*
* @param imageName
* @return Bitmap
*/
public Bitmap getImageFromSD(String imageName) {
return BitmapFactory.decodeFile(sdPath);
}
4、Assets目录下获取图片
两种方法
1.利用AssetManager
/**
* 从Assets目录下卡获取图片方法1
*
* @param imageName
* @return Bitmap
*/
public Bitmap getImageFromAssets(String imageName) {
AssetManager am = getAssets();
InputStream is = null;
try {
is = am.open("image/" + imageName);//得到图片流
} catch (IOException e) {
e.printStackTrace();
}
return BitmapFactory.decodeStream(is);
}
2.利用getResourceAsStream()方法
/**
* 从Assets目录下卡获取图片方法2
*
* @param imageName
* @return Bitmap
*/
public Bitmap getImageFromAssets2(String imageName) {
InputStream is = getClass().getResourceAsStream("/assets/image/" + imageName);
return BitmapFactory.decodeStream(is);
}
5、获取raw目录下图片
/**
* 从raw目录下获取图片方法
*
* @return Bitmap
*/
public Bitmap getImageFromRaw() {
InputStream is = getResources().openRawResource(R.raw.yxs);
return BitmapFactory.decodeStream(is);
}
6、获取网络图片
/**
* 从网络上获取图片方法
*
* @return Bitmap
*/
public Bitmap getImageFromInternet() {
String url = "http://pic.baike.soso.com/p/20130128/bki-20130128144516-1340884592.jpg";
InputStream is = null;
try {
is = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
return BitmapFactory.decodeStream(is);
}
调用
// 需要在线程中执行网络操作
new Thread() {
@Override
public void run() {
final Bitmap bitmap = getImageFromInternet();
imageView6.post(new Runnable() {
@Override
public void run() {
imageView6.setImageBitmap(bitmap);
}
});
}
}.start();
}
开发工具:Android Studio1.4
SDK: Android 6.0
API 23
代码下载:ShowImageView.zip