wemall app中基于Java获取和保存图片的代码
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。分享其中关于 保存正在下载的图片URL集合和图片三种获取方式管理者,网络URL获取、内存缓存获取、外部文件缓存获取的代码供技术员学习参考使用。
package com.inuoer.util; import java.lang.ref.SoftReference; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.content.Context; import android.graphics.Bitmap; import android.os.Handler; public class AsyncImageLoader { // 保存正在下载的图片URL集合,避免重复下载用 private static HashSet<String> sDownloadingSet; // 软引用内存缓存 private static Map<String, SoftReference<Bitmap>> sImageCache; // 图片三种获取方式管理者,网络URL获取、内存缓存获取、外部文件缓存获取 private static LoaderImpl impl; // 线程池相关 private static ExecutorService sExecutorService; // 通知UI线程图片获取ok时使用 private Handler handler; /** * 异步加载图片完毕的回调接口 */ public interface ImageCallback { /** * 回调函数 * * @param bitmap * : may be null! * @param imageUrl */ public void onImageLoaded(Bitmap bitmap, String imageUrl); } static { sDownloadingSet = new HashSet<String>(); sImageCache = new HashMap<String, SoftReference<Bitmap>>(); impl = new LoaderImpl(sImageCache); } public AsyncImageLoader(Context context) { handler = new Handler(); startThreadPoolIfNecessary(); String defaultDir = context.getCacheDir().getAbsolutePath(); setCachedDir(defaultDir); } /** * 是否缓存图片至/data/data/package/cache/目录 默认不缓存 */ public void setCache2File(boolean flag) { impl.setCache2File(flag); } /** * 设置缓存路径,setCache2File(true)时有效 */ public void setCachedDir(String dir) { impl.setCachedDir(dir); } /** 开启线程池 */ public static void startThreadPoolIfNecessary() { if (sExecutorService == null || sExecutorService.isShutdown() || sExecutorService.isTerminated()) { sExecutorService = Executors.newFixedThreadPool(3); // sExecutorService = Executors.newSingleThreadExecutor(); } } /** * 异步下载图片,并缓存到memory中 * * @param url * @param callback * see ImageCallback interface */ public void downloadImage(final String url, final ImageCallback callback) { downloadImage(url, true, callback); } /** * * @param url * @param cache2Memory * 是否缓存至memory中 * @param callback */ public void downloadImage(final String url, final boolean cache2Memory, final ImageCallback callback) { if (sDownloadingSet.contains(url)) { // Log.i("AsyncImageLoader", "###该图片正在下载,不能重复下载!"); return; } Bitmap bitmap = impl.getBitmapFromMemory(url); if (bitmap != null) { if (callback != null) { callback.onImageLoaded(bitmap, url); } } else { // 从网络端下载图片 sDownloadingSet.add(url); sExecutorService.submit(new Runnable() { @Override public void run() { final Bitmap bitmap = impl.getBitmapFromUrl(url, cache2Memory); handler.post(new Runnable() { @Override public void run() { if (callback != null) callback.onImageLoaded(bitmap, url); sDownloadingSet.remove(url); } }); } }); } } /** * 预加载下一张图片,缓存至memory中 * * @param url */ public void preLoadNextImage(final String url) { // 将callback置为空,只将bitmap缓存到memory即可。 downloadImage(url, null); } }
wemall-mobile详情下载地址:http://www.koahub.com/home/product/56
wemall官网地址:http://www.wemallshop.com
wemall 开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统
wemall app中基于Java获取和保存图片的代码的更多相关文章
- wemall app商城源码中基于JAVA通过Http请求获取json字符串的代码
wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.分享其中关于通过Http请求获取json字符串的代码供 ...
- wemall app商城源码中基于JAVA的Android异步加载图片管理器代码
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...
- wemall app商城源码中基于JAVA的绑定和处理fragments和viewpager之间的逻辑关系代码
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...
- wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码
wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改.本文分享其中 ...
- 支付宝APP支付(基于Java实现支付宝APP支付)
贴一下支付核心代码,以供后续参考: 业务层 import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; ...
- 微信APP支付(基于Java实现微信APP支付)
步骤: 导入maven依赖 <!--微信支付--> <dependency> <groupId>com.github.wxpay</groupId> & ...
- Android中通过Java获取Webview加载内容
有时候我们需要在加载webview时,获取加载完成的内容,当然,WebView也是有可能包含javascript.通过以下操作,我们是可以获取到WebView加载的内容. 1.自定义一个内部类,获取W ...
- web中纯java获取配置文件中的数据
/*********获取配置文件,但配置文件中的值改变,不会随着值的改变也获取的参数值改变**********/ /** * 原因是因为,类装载,装载完后,不会再去装载了 * */// I ...
- 【Spring】28、Spring中基于Java的配置@Configuration和@Bean用法.代替xml配置文件
Spring中为了减少xml中配置,可以生命一个配置类(例如SpringConfig)来对bean进行配置. 一.首先,需要xml中进行少量的配置来启动Java配置: <?xml version ...
随机推荐
- ThinkPHP 分组,应用,跳转
一.多应用配置技巧 在主入口文件index.php同级目录,新建一个 config.php 写入公共的配置项,然后在前后台各自的配置文件config.php中 $arr = include ...
- xtemplate语法
XTemplate 是富逻辑的 KISSY 模板引擎,面向复杂的业务逻辑场景,同时保持高性能和丰富的配置方法,是易学易懂的模板语言. 一个典型的XTemplate模板实例: Hello {{name} ...
- Nginx之RTMP
1. RTMP协议介绍 RTMP(Real Time Messaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播放器和服务器之间音频.视频和数据传输开发的私有 ...
- CentOS7系统安装DNS服务
CentOS7系统安装DNS服务 30.1.DNS是什么? DNS ( Domain Name System )是"域名系统"的英文缩写,简单来说就是一个数据库,用于存储网络中IP ...
- CodeForces 721B
B. Passwords time limit per test:2 seconds memory limit per test:256 megabytes input:standard input ...
- Javascript中的 “&” 和 “|” 你知多少?
.v-top { position: relative; top: -5px; font-size: 12px } 一.前言: 在文章开始之前,先出几个题目给大家看看: var num1 = 1 &a ...
- WebForm 内置对象、数据增删改、状态保持
一.内置对象 1.Response对象:响应请求 Response.Write("<script>alert('添加成功!')</script>"); → ...
- js实现省市区联动
先来看看效果图吧,嘻嘻~~~~~~~~~~~~~~~~~~~· 代码在下面: 示例一: html: <!DOCTYPE html> <html> <head> &l ...
- css3 3d变换和动画——回顾
1.transform-style 属性指定嵌套原始是怎样在三维空间中呈现. 语法:transform-style: flat | preserve-3d flat 表示所有子元素在2D平面呈现. p ...
- QML Object Attributes QML对象属性
QML Object Attributes Every QML object type has a defined set of attributes. Each instance of an obj ...