Universal-Image-loader 部分源码讲解 及 如何 配合阿里云 实现图片缓存。
来源:互联网 发布:vivo软件开发待遇 编辑:程序博客网 时间:2024/06/06 08:42
Universal-Image-loader 部分源码讲解 及 如何 配合阿里云 实现图片缓存
- ImagerLoader 相关使用及使用 我就不再啰嗦了 ,有需求的同学请直接飞过去http://blog.csdn.net/xiaanming/article/details/26810303
- 开始讲下阿里云图片 服务器使用及其 android 端的 oss-android-sdk-1.0.0.jar 以下贴出android 端管理类。
public class OSSManager { private static OSSManager instance; private static OSSService ossService; public static OSSManager getInstance() { if (instance == null) { instance = new OSSManager(); } return instance; } public static OSSService getOssService() { return ossService; } private static String TAG = OSSManager.class.getSimpleName(); public void Init(final Context context) { if (ossService == null) { ossService = OSSServiceProvider.getService(); } ossService.setGlobalDefaultTokenGenerator(new TokenGenerator() { @Override public String generateToken(String httpMethod, String md5, String type, String date, String ossHeaders, String resource) { //demo的顺序 不要动它 String content = httpMethod + "\n" + md5 + "\n" + type + "\n" + date + "\n" + ossHeaders + resource; //以下代码是请求 密钥的 方法 必须实现(你换成你自己的http 请求 就好了),其他代码 直接照搬 demo就好了// ClientServer server = new ClientServer(InterfaceMethod.get36(content));// ResultBean resultBean = server.execute(context);// if (resultBean != null&&resultBean.getErr()==0) {// @SuppressWarnings("unchecked")// Map<String,String> map = (Map<String, String>) resultBean.getResultParam(Map.class)// .get(0);// //map.get("data") 为服务器加密后的key 直接返回就好了// return map.get("data");// } else { return "";// } } }); ossService.setGlobalDefaultHostId("oss-cn-hangzhou.aliyuncs.com"); ossService.setCustomStandardTimeWithEpochSec(System.currentTimeMillis() / 1000); ossService.setGlobalDefaultACL(AccessControlList.PRIVATE); // 默认为private ClientConfiguration conf = new ClientConfiguration(); conf.setConnectTimeout(15 * 1000); // 设置全局网络连接超时时间,默认30s conf.setSocketTimeout(15 * 1000); // 设置全局socket超时时间,默认30s conf.setMaxConnections(50); // 设置全局最大并发网络链接数, 默认50 ossService.setClientConfiguration(conf); } }
3.文件 上传
public static OSSData postImageOSSdata(byte[] dataToUpload, String path) { LogUtil.i("服务器地址", path); OSSData data = getOssService().getOssData(getUploadBucket(), path); data.setData(dataToUpload, "image/jpeg"); //上传监听 data.uploadInBackground(new SaveCallback() { @Override public void onSuccess(String objectKey) { Log.d(TAG, "[onSuccess] - " + objectKey + " upload success!"); } @Override public void onProgress(String objectKey, int byteCount, int totalSize) { Log.d(TAG, "[onProgress] - current upload " + objectKey + " bytes: " + byteCount + " in total: " + totalSize); } @Override public void onFailure(String objectKey, OSSException ossException) { } }); return data; } //文件储存服务器 private static OSSBucket getUploadBucket() { OSSBucket bucket = getOssService().getOssBucket("你们租用服务器的名字"); return bucket; }
4.获取图片
public static byte[] getImage(String path) { byte[] bData = null; OSSData data = getOssService().getOssData(getBucket(), path); try { bData = data.get(); Log.d(TAG, "finish getting data! length: " + bData.length); } catch (OSSException e) { HandleException.handleException(e); } return bData; //图片处理 服务器 OSSBucket private static OSSBucket getBucket() { //这里 使用已经绑定域名的 图片服务器 应为OSS 规定只有绑定图片服务器域名了才可以 使用图片服务器功能(比如图片压缩) OSSBucket bucket = getOssService().getOssBucket("你们绑定的 图片服务器域名"); bucket.setBucketHostId("你们绑定的 图片服务器域名"); return bucket; }
- 上面已经把Oss 用到的设置及 主要的2个方法 已经 写出来了,现在我们来配合一下 Universal-Image-Loader。
File cacheDir = StorageUtils.getCacheDirectory(context);ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .memoryCacheExtraOptions(480, 800) // default = device screen dimensions .diskCacheExtraOptions(480, 800, CompressFormat.JPEG, 75, null) .taskExecutor(...) .taskExecutorForCachedImages(...) .threadPoolSize(3) // default .threadPriority(Thread.NORM_PRIORITY - 1) // default .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) .memoryCacheSize(2 * 1024 * 1024) .memoryCacheSizePercentage(13) // default .diskCache(new UnlimitedDiscCache(cacheDir)) // default .diskCacheSize(50 * 1024 * 1024) .diskCacheFileCount(100) .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default //这句是关键点 把这个配置到你的代码里。 .imageDownloader(new AliLoader(context)) .imageDecoder(new BaseImageDecoder()) // default .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() .build();
6.自定义 AliLoader 类。
public class AliLoader extends BaseImageDownloader { private static boolean isgetToken = false; // private String uri; public AliLoader(Context context) { super(context); // TODO Auto-generated constructor stub } @Override protected InputStream getStreamFromOtherSource(String imageUri, Object extra) throws IOException { // TODO Auto-generated method stub byte[] b = OSSManager.getImage(imageUri); if (b != null) { return new ByteArrayInputStream(b); } else { return super.getStreamFromOtherSource(imageUri, extra); } }
7.大家有疑问可以 留言 我每天都会登陆 当天解答问题,谢谢支持。
1 0
- Universal-Image-loader 部分源码讲解 及 如何 配合阿里云 实现图片缓存。
- universal image loader源码分析——图片内存缓存
- Universal-Image-Loader源码分析,及常用的缓存策略
- universal-image-loader实现图片的异步加载与缓存
- Android-Universal-Image-Loader图片缓存
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader图片缓存架构
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- Universal-Image-Loader(android图片缓存)
- universal-image-loader如何设置本地图片
- 数据库体系结构-共享池(shared pool),largepool,Java池,流池
- Android学习之ListView与SimpleAdapter的使用
- 第1章 Java语言概述与开发环境
- HTML5之Web开发备用设计记录
- linux 分析 ptrace()
- Universal-Image-loader 部分源码讲解 及 如何 配合阿里云 实现图片缓存。
- hdu1313 Round and Round We Go (大数乘法)
- android:eclipse看着很舒服的字体和启动速度很快android模拟器
- 【机房合作】Datagridview汉字表头的设置
- leetcode日志:解题参考引用
- js之事件冒泡和事件捕获详细介绍
- POJ_2406_PowerStrings
- Fresco图片加载框架的简单介绍
- PHP之代码片段收集