wemall app中基于JAVA获取和保存图片的代码
来源:互联网 发布:视频编辑软件下载 编辑:程序博客网 时间:2024/06/05 04:18
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() {@Overridepublic void run() {final Bitmap bitmap = impl.getBitmapFromUrl(url,cache2Memory);handler.post(new Runnable() {@Overridepublic 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系统
0 0
- wemall app中基于JAVA获取和保存图片的代码
- wemall app商城源码中基于JAVA的Android异步加载图片管理器代码
- wemall app中基于JAVA通过Http请求获取json字符串的代码
- wemall app商城源码中基于PHP的ThinkPHP惯例配置文件代码
- WeMall的Android app商城中的wemall doraemon代码
- wemall doraemon中Android app商城系统向指定URL发送GET方法的请求代码
- WeMall商城系统的Android app商城中的wemall-mobile代码
- wemall app商城源码中ScrollView中嵌套ListView主要代码
- wemall doraemon中Android app商城系统解决左侧抽屉菜单和viewpager不能兼容问题
- java servlet获取上传图片以二进制保存到MySQL中,读取Mysql保存的二进制图片
- wemall app商城源码中android按钮的三种响应事件
- java从一段html代码中获取图片的路径
- 保存图片的代码
- java通过http的图片地址获取图片并保存
- wemall app商城源码Fragment中监听onKey事件
- wemall app商城源码Android中ViewHolder详细解释
- 基于canvas的图片保存
- wemall app商城源码Android数据的SharedPreferences储存方式
- openwrt-njit-client --我的笔记(2.6)
- Python2.7在win10下的安装配置
- swift 学习笔记(3)数组- Array
- Android 学习过程已解决的问题(一)
- Eclipse 中 Tomcat启动卡100%(preparing launch delegate...)
- wemall app中基于JAVA获取和保存图片的代码
- Ubuntu切换默认sh为bash或者dash
- Android:Service生命周期最全面解析
- HTML常用标签整理(b类)
- zabbix3.0.2 使用percona的mysql插件的遇到的诡异问题解决记录
- hduoj1028 母函数
- 【Cocos2d-x】集成wxSqlite3到Cocos2d-x
- 根据结点的值域奇偶性分离成两个链表
- LeetCode No.375 Guess Number Higher or Lower II