永发信息网

xUtils bitmap 缓存路径怎么设置

答案:2  悬赏:70  手机版
解决时间 2021-02-14 17:07
  • 提问者网友:沦陷
  • 2021-02-14 08:00
xUtils bitmap 缓存路径怎么设置 怎么设置缓存或者不缓存
最佳答案
  • 五星知识达人网友:纵马山川剑自提
  • 2021-02-14 08:05
你看他的library的BitmapUtils.java类就知道他的构造方法
全部回答
  • 1楼网友:风格不统一
  • 2021-02-14 09:01
网络缓存 网络拉取图片严格来讲不能称之为缓存,实质上就是下载url对应的图片,我们这里姑且把它看作是缓存的一种。仿照bitmaputil中的display方法,我自己定制的custombitmaputils也定义这个方法,根据传入的url,将图片设置到ivpic控件上。 [java] view plain copy public void display(imageview ivpic, string url) { } 定义网络缓存的工具类,在访问网络的时候,我使用了asynctask来实现,在asynctask的doinbackground方法里下载图片,然后将 图片设置给ivpic控件,asynctask有三个泛型,其中第一个泛型是执行异步任务的时候,通过execute传过来的参数,第二个泛型是更新的进度,第三个泛型是异步任务执行完成之后,返回来的结果,我们这里返回一个bitmap。具体的下载实现代码如下: [java] view plain copy
  
public class netcacheutils {  

    private localcacheutils localcacheutils;  
    private memorycacheutils memorycacheutils;  

    public netcacheutils() {  
        localcacheutils = new localcacheutils();  
        memorycacheutils = new memorycacheutils();  
    }  

      
    public void getbitmapfromnet(imageview ivpic, string url) {  
        // 访问网络的操作一定要在子线程中进行,采用异步任务实现  
        myasynctask task = new myasynctask();  
        task.execute(ivpic, url);  

    }  

      
    private class myasynctask extends asynctask {  

        private imageview ivpic;  
        private string url;  

        // 耗时任务执行之前 --主线程  
        @override  
        protected void onpreexecute() {  
            super.onpreexecute();  
        }  

        // 后台执行的任务  
        @override  
        protected bitmap doinbackground(object... params) {  
            // 执行异步任务的时候,将url传过来  
            ivpic = (imageview) params[0];  
            url = (string) params[1];  
            bitmap bitmap = downloadbitmap(url);  
            // 为了保证imageview控件和url一一对应,给imageview设定一个标记  
            ivpic.settag(url);// 关联ivpic和url  

            return bitmap;  
        }  

        // 更新进度 --主线程  
        @override  
        protected void onprogressupdate(void... values) {  
            super.onprogressupdate(values);  
        }  

        // 耗时任务执行之后--主线程  
        @override  
        protected void onpostexecute(bitmap result) {  
            string mcurrenturl = (string) ivpic.gettag();  
            if (url.equals(mcurrenturl)) {  
                ivpic.setimagebitmap(result);  
                system.out.println("从网络获取图片");  
                // 从网络加载完之后,将图片保存到本地sd卡一份,保存到内存中一份  
                localcacheutils.setbitmap2local(url, result);  
                // 从网络加载完之后,将图片保存到本地sd卡一份,保存到内存中一份  
                memorycacheutils.setbitmap2memory(url, result);  

            }  
        }  
    }  

      
    private bitmap downloadbitmap(string url) {  
        httpurlconnection conn = null;  
        try {  
            url murl = new url(url);  
            // 打开httpurlconnection连接  
            conn = (httpurlconnection) murl.openconnection();  
            // 设置参数  
            conn.setconnecttimeout(5000);  
            conn.setreadtimeout(5000);  
            conn.setrequestmethod("get");  
            // 开启连接  
            conn.connect();  

            // 获得响应码  
            int code = conn.getresponsecode();  
            if (code == 200) {  
                // 相应成功,获得网络返回来的输入流  
                inputstream is = conn.getinputstream();  

                // 图片的输入流获取成功之后,设置图片的压缩参数,将图片进行压缩  
                bitmapfactory.options options = new bitmapfactory.options();  
                options.insamplesize = 2;// 将图片的宽高都压缩为原来的一半,在开发中此参数需要根据图片展示的大小来确定,否则可能展示的不正常  
                options.inpreferredconfig = bitmap.config.rgb_565;// 这个压缩的最小  

                // bitmap bitmap = bitmapfactory.decodestream(is);  
                bitmap bitmap = bitmapfactory.decodestream(is, null, options);// 经过压缩的图片  

                return bitmap;  
            }  

        } catch (exception e) {  
            e.printstacktrace();  
        } finally {  
            // 断开连接  
            conn.disconnect();  
        }  

        return null;  
    }  
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯