[轉]ResDrawableImgUtil【根據圖片名稱獲取resID值或者Bitmap物件】
阿新 • • 發佈:2019-02-12
原文:https://www.cnblogs.com/whycxb/p/7245337.html
package com.why.project.resdrawableimgutildemo.util; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.support.v4.content.ContextCompat; import com.why.project.resdrawableimgutildemo.R; import java.lang.reflect.Field; /** * @Created HaiyuKing * @Used 根據圖片名稱獲取resID值或者Bitmap物件 * @參考資料 http://topmanopensource.iteye.com/blog/1600321 * http://blog.csdn.net/wuzhipeng1991/article/details/17374561 */ public class ResDrawableImgUtil { public final static String FILE_EXTENSION_SEPARATOR = ".";//副檔名分割器 /** * 根據圖片名稱獲取圖片的resID值(方案一) * @param imgName 圖片名稱*/ public static int getResourceIdByIdentifier(Context context, String imgName){ //判斷imgName是否含有後綴 int extenPosi = imgName.lastIndexOf(FILE_EXTENSION_SEPARATOR); if(extenPosi != -1){ imgName = imgName.substring(0, extenPosi); } int imgResourceId = -1; imgResourceId = context.getResources().getIdentifier(imgName, "drawable" , context.getPackageName()); return imgResourceId; } /** * 根據圖片名稱獲取圖片的resID值(方案二) * @param imgName 圖片名稱*/ public static int getResourceIdByReflect(String imgName){ //判斷imgName是否含有後綴 int extenPosi = imgName.lastIndexOf(FILE_EXTENSION_SEPARATOR); if(extenPosi != -1){ imgName = imgName.substring(0, extenPosi); } int imgResourceId = -1; Class drawable = R.drawable.class; Field field = null; try { field = drawable.getField(imgName); imgResourceId = field.getInt(field.getName()); } catch (Exception e) { } return imgResourceId; } /** * 根據圖片的resID值獲取圖片名稱 * @param imgResId 圖片的resID值*/ public static String getResourceName(Context context,int imgResId){ String imgName = ""; imgName = context.getResources().getResourceName(imgResId); return imgName; } /** * 根據圖片名稱獲取圖片的Drawable * @param imgName 圖片名稱*/ public static Drawable getDrawableByImgName(Context context, String imgName){ //int imgResourceId = R.drawable.ic_launcher;//Eclipse寫法 int imgResourceId = R.mipmap.ic_launcher;//Android Studio寫法 imgResourceId = getResourceIdByIdentifier(context,imgName); //解析資原始檔夾下,id為resID的圖片 return ContextCompat.getDrawable(context,imgResourceId); } /** * 根據圖片名稱獲取圖片的Bitmap * @param imgName 圖片名稱*/ public static Bitmap getBitmapByImgName(Context context, String imgName){ //int imgResourceId = R.drawable.ic_launcher;//Eclipse寫法 int imgResourceId = R.mipmap.ic_launcher;//Android Studio寫法 imgResourceId = getResourceIdByIdentifier(context,imgName); //解析資原始檔夾下,id為resID的圖片 return BitmapFactory.decodeResource(context.getResources(),imgResourceId); } }