[文件] ImageManager2.java ~ 13KB    下载(5) package com.example.util;import java.io.File;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;http://www.fp1111.info/linked/20130304.do;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.util.EntityUtils;import android.app.ActivityManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.media.ThumbnailUtils;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.support.v4.util.LruCache;
import android.widget.ImageView;import com.example.MyApplication;/*** 图像加载类* * @author 月月鸟*/
public class ImageManager2 {private static ImageManager2 imageManager;public LruCache mMemoryCache;private static final int DISK_CACHE_SIZE = 1024 * 1024 * 20; // 10MBprivate static final String DISK_CACHE_SUBDIR = "thumbnails";public DiskLruCache mDiskCache;private static MyApplication myapp;/** 图像加载行列,后进先出 */private Stack mImageQueue = new Stack();/** 图像恳求行列,先进先出,用于寄存已发送的恳求。 */private Queue mRequestQueue = new LinkedList();/** 图像加载线程音讯处理器 */private Handler mImageLoaderHandler;/** 图像加载线程能否安排妥当 */private boolean mImageLoaderIdle = true;/** 恳求图像 */private static final int MSG_REQUEST = 1;/** 图像加载完结 */private static final int MSG_REPLY = 2;/** 间断图像加载线程 */private static final int MSG_STOP = 3;/** 若是图像是从网络加载,则运用渐显动画,若是从缓存读出则不运用动画 */private boolean isFromNet = true;/*** 获取单例,只能在UI线程中运用。* * @param context* @return*/public static ImageManager2 from(Context context) {// 若是不在ui线程中,则抛出反常if (Looper.myLooper() != Looper.getMainLooper()) {throw new RuntimeException("Cannot instantiate outside UI thread.");}if (myapp == null) {myapp = (MyApplication) context.getApplicationContext();}if (imageManager == null) {imageManager = new ImageManager2(myapp);}return imageManager;}/*** 私有结构函数,确保单例形式* * @param context*/private ImageManager2(Context context) {int memClass = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();memClass = memClass > 32 ? 32 : memClass;// 运用可用内存的1/8作为图像缓存final int cacheSize = 1024 * 1024 * memClass / 8;mMemoryCache = new LruCache(cacheSize) {protected int sizeOf(String key, Bitmap bitmap) {return bitmap.getRowBytes() * bitmap.getHeight();}};File cacheDir = DiskLruCache.getDiskCacheDir(context, DISK_CACHE_SUBDIR);mDiskCache = DiskLruCache.openCache(context, cacheDir, DISK_CACHE_SIZE);}/*** 寄存图像信息*/class ImageRef {/** 图像对应ImageView控件 */ImageView imageView;/** 图像URL地址 */String url;/** 图像缓存途径 */String filePath;/** 默许图资源ID */int resId;int width = 0;int height = 0;/*** 结构函数* * @param imageView* @param url* @param resId* @param filePath*/ImageRef(ImageView imageView, String url, String filePath, int resId) {this.imageView = imageView;this.url = url;this.filePath = filePath;this.resId = resId;}ImageRef(ImageView imageView, String url, String filePath, int resId,int width, int height) {this.imageView = imageView;this.url = url;this.filePath = filePath;this.resId = resId;this.width = width;this.height = height;}}/*** 显现图像* * @param imageView* @param url* @param resId*/public void displayImage(ImageView imageView, String url, int resId) {if (imageView == null) {return;}if (imageView.getTag() != nullhttp://www.1111kp.info/linked/20130304.do; 

转载于:https://www.cnblogs.com/fpqqchao/archive/2013/03/05/2943671.html

Android图像办理组件相关推荐

  1. Android 之 四大组件、六大布局、五大存储

    Android 之四大组件.六大布局.五大存储:https://blog.csdn.net/shenggaofei/article/details/52450668 Android 四大组件.五大存储 ...

  2. Android四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  3. Android四大基本组件和生命周期的介绍

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  4. Android应用程序组件Content Provider的启动过程源代码分析(6)

        Step 17. ActivityThread.installProvider         这个函数定义在frameworks/base/core/java/android/app/Act ...

  5. Android应用程序组件Content Provider的共享数据更新通知机制分析(3)

            3. 数据更新通知的发送过程        在前面这篇文章Android应用程序组件Content Provider应用实例介绍的应用程序Acticle中,当调用ArticlesAda ...

  6. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  7. Android应用程序组件Content Provider的启动过程源代码分析(1)

             通过前面的学习,我们知道在Android系统中,Content Provider可以为不同的应用程序访问相同的数据提供统一的入口.Content Provider一般是运行在独立的进 ...

  8. android置组件下面,Android Jetpack架构组件(十二)之Hilt

    一. 依赖注入简介 依赖注入(英文Dependency Injection,简写DI)是一种被广泛使用的编程技术,主要的作用代码解耦. 借助依赖注入,我们可以轻松的管理类之间的依赖,并最终建立高可维护 ...

  9. Android自己定义组件系列【6】——进阶实践(3)

    上一篇<Android自己定义组件系列[5]--进阶实践(2)>继续对任老师的<可下拉的PinnedHeaderExpandableListView的实现>进行了分析,这一篇计 ...

  10. Android深入四大组件(八)广播的注册、发送和接收过程

    前言 我们接着来学习Android四大组件中的BroadcastReceiver,广播主要就是分为注册.接收和发送过程.建议阅读此文前请先阅读Android深入理解四大组件系列的文章,知识重复的部分, ...

最新文章

  1. 拆卸台式电脑主机,cpu,硬盘,内存条等
  2. python双引号和单引号区别_Python中单引号,双引号,3个单引号及3个双引号的区别...
  3. 给博客园添加文章自动目录
  4. hdu1198 Farm Irrigation —— dfs or 并查集
  5. C++基础::Stream(二)
  6. html中span隐藏属性,JS 如果改变span标签的是否隐藏属性
  7. 远程预付费管理系统帮助物业解决收费难统计难问题
  8. 算法大亨Carl的面试简历长啥样?同款模板让你脱胎换骨
  9. 2008下搭建easypanel(康乐)虚拟主机控制面板
  10. Unity3D陀螺仪的使用
  11. FIRST集合基本构造
  12. 史上最美八大隶书,你都临过吗?
  13. 网站自动SEO优化软件
  14. 设备 naa.6006016004102900751132ac8de3e211 性能降低。
  15. 【麒麟操作系统软件商店老是闪退?--麒麟系统软件商店卸载与重装(小白教程)】
  16. DELL T7600工作站重新安装WIN7系统
  17. JAVA架构之路(二)
  18. NAO机器人的Walk功能
  19. 宽度优先搜索python_宽是什么意思 宽字五行属什么
  20. android studio按钮点击事件,如何在Android Studio中添加按钮单击事件

热门文章

  1. ubuntu16.04安装驱动
  2. 【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
  3. python金融股票市场数据分析神器TA-Lib学习使用
  4. 用PBD制作餐饮店KPI分析仪-入门篇
  5. putty 使用perm密钥文件登陆堡垒机
  6. BootStrap的应用——实现黑马旅游网页面
  7. return 0在c语言中是什么意思_单次T+0与蓝筹股试点T+0制度是什么意思,两者有何区别?...
  8. C++ std::function怎么用
  9. kubernetes视频教程笔记 (7)-安装Harbor私有仓库
  10. springmvc中关于post请求会出现乱码的整理