图片加载工具类

原创 2016年08月31日 15:43:23
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;
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Universal-Image-Loader总结的图片加载工具类

架包位于https://github.com/nostra13/Android-Universal-Image-Loader 加载图片来源:图片来源:1:网络;2:sd卡;3.Content pro...

Fresco图片加载框架的介绍,相关开源库以及工具类的封装

Fresco图片加载框架的介绍,相关开源库以及工具类的封装Fresco图片加载框架的介绍相关开源库以及工具类的封装 工具类FrescoUtils地址 简介 优点一内存管理 优点二更便捷的使用 相关文档...

安卓使用Picasso封装图片加载工具类

package com.lgl.picasso; import android.content.Context; import android.graphics.Bitmap; import and...

安卓图片加载工具

  • 2015年04月09日 15:22
  • 2.45MB
  • 下载

PhotoPaint图片加载显示类

  • 2013年06月19日 11:14
  • 6KB
  • 下载

android中图片异步加载工具类 ---利用双缓存技术和线程池

图片的异步加载是在android中的经常用的技术,android提供的源码中也有图片异步加载的工具类,可是一般只是利用了软缓存的技术,也就是将图片直接缓存在内存之中而已,当内存不足的时候缓存中的图片会...

Unity+NGUI打造网络图片异步加载与本地缓存工具类(二)

这里判断缓存文件是否存在使用的是url.GetHashCode()方法,因为我们的图片文件名采用的是原URL的哈希码直接作为文件名来保存,重名概率可以忽略不计,也缩短了文件名的长度提高效率,这个做法借...

Unity+NGUI打造网络图片异步加载与本地缓存工具类

网址:http://blog.csdn.net/mobanchengshuang/article/details/38047779 我们在移动端的开发中,异步网络图片加载用的非常的多,在un...

Android LruCache图片异步加载工具类

AsyncImageLoader2.java
  • Hknock
  • Hknock
  • 2014年10月31日 18:02
  • 1173

Unity+NGUI打造网络图片异步加载与本地缓存工具类(一)

我们在移动端的开发中,异步网络图片加载用的非常的多,在unity当中虽然有AssetBundle的存在,一般是先加载好游戏资源然后再进入场景,但是还有不少地方能够用到异步网络图片的加载以及其缓存机制。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图片加载工具类
举报原因:
原因补充:

(最多只允许输入30个字)