一、ImageView設定圖檔的各種方法
1、setImageResource(int resId)
示例代碼:
2、setImageDrawable(Drawable drawable)
示例代碼:
3、setImageBitmap(Bitmap bm)
示例代碼:
4、setImageIcon(Icon icon)
示例代碼:
Android6.0(API23)以上才可以使用這個方法
5、setImageURI(Uri uri)
示例代碼:
二、擷取圖檔資源的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