1. 程式人生 > >圖片載入工具類

圖片載入工具類

public class BitmapUtil {
    private static final String TAG = "BtimapUtil";

    /**
     * 根據網址獲得圖片,優先從本地獲取,本地沒有則從網路下載
     * @param url  圖片網址
     * @param context 上下文
     * @return 圖片
     */
    public static Bitmap getBitmap(String url,Context context){
        Log.e(TAG, "------url="+url);
        String imageName= url.substring(url.lastIndexOf("/"
)+1, url.length()); File file = new File(getPath(context),imageName); if(file.exists()){ Log.e(TAG, "getBitmap from Local"); return BitmapFactory.decodeFile(file.getPath()); } return getNetBitmap(url,file,context); } /** * 根據傳入的list中儲存的圖片網址,獲取相應的圖片列表 * @param
list 儲存圖片網址的列表 * @param context 上下文 * @return 圖片列表 */
public static List<Bitmap> getBitmap(List<String> list,Context context){ List<Bitmap> result = new ArrayList<Bitmap>(); for(String strUrl : list){ Bitmap bitmap = getBitmap(strUrl,context); if
(bitmap!=null){ result.add(bitmap); } } return result; } /** * 獲取圖片的儲存目錄,在有sd卡的情況下為 “/sdcard/apps_images/本應用包名/cach/images/” * 沒有sd的情況下為“/data/data/本應用包名/cach/images/” * * @param context 上下文 * @return 本地圖片儲存目錄 */ private static String getPath(Context context){ String path = null; boolean hasSDCard = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED); String packageName = context.getPackageName()+"/cach/images/"; if(hasSDCard){ path=AppsConfig.LOCAL_TEMPFILE; }else{ path=context.getFilesDir().getPath()+"/data/"+packageName; } File file = new File(path); boolean isExist = file.exists(); if(!isExist){ file.mkdirs(); } return file.getPath(); } /** * 網路可用狀態下,下載圖片並儲存在本地 * @param strUrl 圖片網址 * @param file 本地儲存的圖片檔案 * @param context 上下文 * @return 圖片 */ private static Bitmap getNetBitmap(String strUrl,File file,Context context) { Log.e(TAG, "getBitmap from net"); Bitmap bitmap = null; if(hasNetwork(context)){ try { URL url = new URL(strUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoInput(true); con.connect(); InputStream in = con.getInputStream(); bitmap = BitmapFactory.decodeStream(in); FileOutputStream out = new FileOutputStream(file.getPath()); bitmap.compress(Bitmap.CompressFormat.PNG,100, out); out.flush(); out.close(); in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ } } return bitmap; } public static boolean hasNetwork(Context var0) { if(var0 != null) { ConnectivityManager var1 = (ConnectivityManager)var0.getSystemService("connectivity"); NetworkInfo var2 = var1.getActiveNetworkInfo(); return var2 != null?var2.isAvailable():false; } else { return false; } } }