wemall doraemon是Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改。本文分享其中关于异步加载图片管理器,供技术员参考学习。

package com.inuoer.util;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.ref.SoftReference;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;/*** * @author Administrator* @desc 异步加载图片管理器**/
public class LoaderImpl {//内存中的软应用缓存private Map<String, SoftReference<Bitmap>> imageCache;//是否缓存图片至本地文件private boolean cache2FileFlag = false;//缓存目录,默认是/data/data/package/cache/目录private String cachedDir;public LoaderImpl(Map<String, SoftReference<Bitmap>> imageCache){this.imageCache = imageCache;}/*** 是否缓存图片至外部文件* @param flag */public void setCache2File(boolean flag){cache2FileFlag = flag;}/*** 设置缓存图片到外部文件的路径* @param cacheDir*/public void setCachedDir(String cacheDir){this.cachedDir = cacheDir;}/*** 从网络端下载图片* @param url 网络图片的URL地址* @param cache2Memory 是否缓存(缓存在内存中)* @return bitmap 图片bitmap结构* */public Bitmap getBitmapFromUrl(String url, boolean cache2Memory){Bitmap bitmap = null;try{URL u = new URL(url);HttpURLConnection conn = (HttpURLConnection)u.openConnection();  InputStream is = conn.getInputStream();bitmap = BitmapFactory.decodeStream(is);if(cache2Memory){//1.缓存bitmap至内存软引用中imageCache.put(url, new SoftReference<Bitmap>(bitmap));if(cache2FileFlag){//2.缓存bitmap至/data/data/packageName/cache/文件夹中String fileName = getMD5Str(url);String filePath = this.cachedDir + "/" +fileName;FileOutputStream fos = new FileOutputStream(filePath);bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);}}is.close();conn.disconnect();return bitmap;}catch(IOException e){e.printStackTrace();return null;}}/*** 从内存缓存中获取bitmap* @param url* @return bitmap or null.*/public Bitmap getBitmapFromMemory(String url){Bitmap bitmap = null;if(imageCache.containsKey(url)){synchronized(imageCache){SoftReference<Bitmap> bitmapRef = imageCache.get(url);if(bitmapRef != null){bitmap = bitmapRef.get();return bitmap;}}}//从外部缓存文件读取if(cache2FileFlag){bitmap = getBitmapFromFile(url);if(bitmap != null)imageCache.put(url, new SoftReference<Bitmap>(bitmap));}return bitmap;}/*** 从外部文件缓存中获取bitmap* @param url* @return*/private Bitmap getBitmapFromFile(String url){Bitmap bitmap = null;String fileName = getMD5Str(url);if(fileName == null)return null;String filePath = cachedDir + "/" + fileName;try {FileInputStream fis = new FileInputStream(filePath);bitmap = BitmapFactory.decodeStream(fis);} catch (FileNotFoundException e) {e.printStackTrace();bitmap = null;}return bitmap;}/**  * MD5 加密  */   private static String getMD5Str(String str) {   MessageDigest messageDigest = null;   try {   messageDigest = MessageDigest.getInstance("MD5");   messageDigest.reset();   messageDigest.update(str.getBytes("UTF-8"));   } catch (NoSuchAlgorithmException e) {
//          System.out.println("NoSuchAlgorithmException caught!");   return null;} catch (UnsupportedEncodingException e) {   e.printStackTrace();return null;}   byte[] byteArray = messageDigest.digest();   StringBuffer md5StrBuff = new StringBuffer();   for (int i = 0; i < byteArray.length; i++) {               if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)   md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));   else   md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));   }   return md5StrBuff.toString();   }  /**  * MD5 加密  private static String getMD5Str(Object...objects){StringBuilder stringBuilder=new StringBuilder();for (Object object : objects) {stringBuilder.append(object.toString());}return getMD5Str(stringBuilder.toString());}*/
}

原文详情地址:http://git.oschina.net/zzunet/wemall-doraemon/commit/e8f303df5663dc69fe47bb9623222149d40e3956

wemall doraemonAndroid app商城详情地址:http://www.koahub.com/home/product/55

wemall官网地址:http://www.wemallshop.com

wemall 开源微商城 ,微信商城,商城源码,三级分销,微生鲜,微水果,微外卖,微订餐---专业的o2o系统

转载于:https://my.oschina.net/u/3007768/blog/790402

wemall app商城源码中基于JAVA的Android异步加载图片管理器代码相关推荐

  1. wemall app商城源码Android之支付宝接口公用函数

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之 ...

  2. wemall app商城源码Android之支付宝通知处理类

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之处 ...

  3. wemall app商城源码Android之支付宝通知处理类 1

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之处 ...

  4. 使用java concurrent处理异步加载图片功能

    转载:http://marshal.easymorse.com/archives/3081 java5开始,增加了concurrent api,用于并发处理.比如起多个线程并发从网络上下载图片,然后在 ...

  5. 在直播APP系统源码中基于腾讯视频云SDK制作简易版直播回放播放器

    在直播App系统中,当主播结束之后,我们需要使用播放器观看直播的一些回放片段,在观看回放的过程中,我们会使用到开始,暂停,控制播放位置,进度监听,全屏等功能,然而腾讯点播并没有提供这些简单的控制功能, ...

  6. Android中的缓存处理及异步加载图片类的封装

    一.缓存介绍: (一).Android中缓存的必要性: 智能手机的缓存管理应用非常的普遍和需要,是提高用户体验的有效手段之一. 1.没有缓存的弊端: 流量开销:对于客户端--服务器端应用,从远程获取图 ...

  7. java图片异步加载_使用java concurrent处理异步加载图片功能

    转载:http://marshal.easymorse.com/archives/3081 java5开始,增加了concurrent api,用于并发处理.比如起多个线程并发从网络上下载图片,然后在 ...

  8. wemall app商城源码Android之支付宝接口RSA函数

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享支付宝接口RSA函数,RSA签名.验签.解密等 ...

  9. 百度ssp php源码,百度联盟SSP媒体广告异步加载代码最优解决方案

    百度联盟SSP媒体广告异步加载代码最优解决方案 相信很多站长跟我一样,建站之后第一时间就会去做百度.谷歌等联盟广告,原因很简单,就是希望能给自己增加一丢丢的收入,虽然可能几个月才收到100块(百度真小 ...

最新文章

  1. 海洋工作室——网站建设专家:How to check the SQL statement execute time on SQL Server ?...
  2. 解决JavaOpenCV的内存问题
  3. (二)C语言数据类型(2)
  4. vmware克隆linux虚拟机网卡无法上网的解决办法
  5. MMORPG大型游戏设计与开发(part5 of net)
  6. 16 分钟优化 mRNA 疫苗稳定性!百度 AI 算法 LinearDesign 为新冠疫苗研发提速
  7. 七牛直播云播放鉴权-时间戳防盗链
  8. 2020新定额及配套招投标评审办法宣贯会成功举办
  9. 使用计算机录制声音10,win10系统电脑中如何解决录屏时无法录制声音的问题
  10. 主流手机游戏引擎介绍
  11. 问卷星投票如何刷投票?【请勿非法使用】
  12. LeetCode第82场双周赛
  13. android 卸载残留代码,完全卸载AndroidStudio(示例代码)
  14. COMSOL和Matlab联合仿真之复合材料填充建模
  15. BAT用户画像数据浅析
  16. 常见计算机名词符号读音
  17. 以OPC PowerTool 连接iFix与KEPWARE
  18. 学习Linux有哪些工作方向?
  19. C#扩展(2):Random的扩展
  20. 56道java基础必“背“面试题(备战2022金三银四)

热门文章

  1. PHP5中PDO连接数据库
  2. STM32+EMWIN电子日历
  3. 两个经纬度点之间计算距离【经纬度距离计算】
  4. 山寨版黑莓PushMail
  5. rk3568-Android11-韦根输入驱动
  6. 微信朋友圈多账号一步同发圈 | 朋友圈
  7. jq 组装数组_Jquery数组操作
  8. 利用VMware搭建虚拟开发环境及VMware虚拟机上网
  9. Flutter 路由动画Offset(dx,dy)
  10. 解压版/免安装版MySQL配置全解