android图片传输三方框架,Android ImageLoader第三方框架解析

2023-11-08

本文实例为大家分享了Android ImageLoader框架的使用方法,供大家参考,具体内容如下

1.准备工作

1)导入universal-image-loader-1.9.5.jar到项目中

020ca7932cf6894247aebdc03cbbf5d2.png

2)创建MyApplication继承Application,在oncreate()中初始化ImageLoader

public class MyApplication extends Application {

@Override

public void onCreate() {

super.onCreate();

initImageLoader(this);

}

// 初始化imageloader

private void initImageLoader(Context context) {

// 初始化参数

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)

.threadPriority(Thread.NORM_PRIORITY - 2) // 线程优先级

.denyCacheImageMultipleSizesInMemory() // 当同一个Uri获取不同大小的图片,缓存到内存时,只缓存一个。默认会缓存多个不同的大小的相同图片

.discCacheFileNameGenerator(new Md5FileNameGenerator()) // 将保存的时候的URI名称用MD5

.tasksProcessingOrder(QueueProcessingType.LIFO) // 设置图片下载和显示的工作队列排序

.writeDebugLogs() // 打印debug log

.build();

// 全局初始化此配置

ImageLoader.getInstance().init(config);

}

}

2.ImageLoader_Listview中使用

5)初始化DisplayImageOptions

6)获取ImageLoader实例

7)显示加载的图片

96d5127e93795fd7d7a2a512cdf528c1.png

public class ImageloaderListviewAdapter extends BaseAdapter {

private Context mContext;

private final ImageLoader imageLoader;

private DisplayImageOptions options = new DisplayImageOptions.Builder()

.showStubImage(R.drawable.atguigu_logo) // 设置图片下载期间显示的图片

.showImageForEmptyUri(R.drawable.atguigu_logo) // 设置图片Uri为空或是错误的时候显示的图片

.showImageOnFail(R.drawable.atguigu_logo) // 设置图片加载或解码过程中发生错误显示的图片

.cacheInMemory(true) // 设置下载的图片是否缓存在内存中

.cacheOnDisk(true) // 设置下载的图片是否缓存在SD卡中

.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片

.build(); // 创建配置过得DisplayImageOption对象;

public ImageloaderListviewAdapter(Context context) {

mContext = context;

// 初始化imageloader

imageLoader = ImageLoader.getInstance();

}

@Override

public int getCount() {

return Constants.IMAGES.length;

}

@Override

public Object getItem(int position) {

return Constants.IMAGES[position];

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

Viewholder holder;

if(convertView == null) {

convertView = View.inflate(mContext, R.layout.item_imageloader_listview, null);

holder = new Viewholder(convertView);

convertView.setTag(holder);

}else {

holder = (Viewholder) convertView.getTag();

}

holder.name.setText("item"+(position + 1));

imageLoader.displayImage(Constants.IMAGES[position],holder.iv,options);

return convertView;

}

class Viewholder{

@Bind(R.id.iv_imageloader_listview)

ImageView iv;

@Bind(R.id.tv_imageloader_name)

TextView name;

public Viewholder(View view) {

ButterKnife.bind(this,view);

}

}

}

3.ImageLoader_在ViewPager中使用

public class ImageloaderViewpagerAdapter extends PagerAdapter {

private Context mContext;

private final ImageLoader imageLoader;

private DisplayImageOptions options = new DisplayImageOptions.Builder()

.showImageForEmptyUri(R.drawable.atguigu_logo) // 设置图片Uri为空或是错误的时候显示的图片

.showImageOnFail(R.drawable.atguigu_logo) // 设置图片加载或解码过程中发生错误显示的图片

.resetViewBeforeLoading(true) // 设置图片在下载前是否重置,复位

.cacheOnDisc(true) // 设置下载的图片是否缓存在SD卡中

.imageScaleType(ImageScaleType.EXACTLY) // 设置图片以如何的编码方式显示

.bitmapConfig(Bitmap.Config.RGB_565) // 设置图片的解码类型

.displayer(new FadeInBitmapDisplayer(300)) // 设置图片渐变显示

.build();

;

public ImageloaderViewpagerAdapter(Context context) {

mContext = context;

// 初始化Imageloader

imageLoader = ImageLoader.getInstance();

}

@Override

public Object instantiateItem(ViewGroup container, int position) {

// 添加布局文件

View view = View.inflate(mContext, R.layout.item_imageloader_viewpager, null);

// 获取控件对象

ImageView iv = (ImageView) view.findViewById(R.id.iv_imageloader_viewpager);

// 显示图片

imageLoader.displayImage(Constants.IMAGES[position], iv, options);

((ViewPager) container).addView(view, 0);

return view;

}

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

((ViewPager) container).removeView((View) object);

}

@Override

public int getCount() {

return Constants.IMAGES.length;

}

@Override

public boolean isViewFromObject(View view, Object object) {

return view.equals(object);

}

}

3.ImageLoader 内存溢出解决办法

1)减少线程池中线程的个数,在ImageLoaderConfiguration中的(.threadPoolSize)中配置,推荐配置1-5。

2)在DisplayImageOptions选项中配置bitmapConfig为Bitmap.Config.RGB_565,因为默认是ARGB_8888, 使用RGB_565会比使用ARGB_8888少消耗2倍的内存。

3)在ImageLoaderConfiguration中配置图片的内存缓存为memoryCache(new WeakMemoryCache()) 或者不使用内存缓存。

4)在DisplayImageOptions选项中设置.imageScaleType(ImageScaleType.IN_SAMPLE_INT)或者imageScaleType(ImageScaleType.EXACTLY)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android图片传输三方框架,Android ImageLoader第三方框架解析 的相关文章

  • 【Python】菜鸡小技巧总结

    本菜鸡在刷leetcode时的一些备忘录 关于 split 的用法 s a good example res s split print res a good example res s split print res a good exa
  • 关于Elasticsearch(es)中使用sql返回结果只有1000条

    es中返回的结果只有1000条 这是默认的 想要返回更多的结果 需要做两步 1 设置max result window的大小 PUT indexName settings max result window 20000 max result
  • vue项目problems:报错\node_modules\@jiaminghi\data-view\lib\components\decoration3\src\main.vue

    项目场景 启动vue项目 问题描述 node modules jiaminghi data view lib components decoration3 src main vue 9 11 原因分析 key i 没有放在 template
  • 2022年第十三届蓝桥杯C/C++ B组第一场省赛题解

    2022年第十三届C C B组第一场蓝桥杯省赛题解 A 九进制转十进制 B 顺子日期 C 刷题统计 D 修剪灌木 E X 进制减法 F 统计子矩阵 G 积木画 H 扫雷 I 李白打酒加强版 J 砍竹子 A 九进制转十进制 答案 1478 解
  • 【华为OD机试真题】【c++/java/python】 网上商城优惠活动(一)【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 某网上商场举办优惠活动 发布了满减 打折 无门槛3种 优惠券 分别为 1 每满100元优惠10元 无使用数限制 如100 199元可以使用1张减
  • 【vscode】远程容器内开发python

    一 环境 本人的远程开发环境 docker容器 miniconda 常用的IDE pyCharm专业版 vsCode Remote Development插件 Python插件 由于pyCharm专业版要么花钱要么破解 我选择了vscode
  • C++常见问题总结_拷贝控制(拷贝、赋值、销毁)

    当我们定义一个类时 我们显示或隐式地指定在此类型对象拷贝 赋值和销毁时做什么 一个类通过定义五种特殊的成员函数来控制这些操作 包括 拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符和析构函数 拷贝和移动构造函数定义了当用同类型的另
  • 【2023 可信数据库发展大会】拓数派受邀参与,CTO 郭罡将在大会发表演讲

    2023年7月4日 5日 由中国信息通信研究院 中国通信标准化协会指导 中国通信标准化协会大数据技术标准推进委员会 CCSA TC601 主办的2023可信数据库发展会将于北京国际会议中心隆重召开 大会以 自主 创新 引领 为主题 开设金融
  • vue 中使用节流和防抖

    今天事情比较少 就特意研究了下在vue中如何使用节流和防抖 还有节流防抖我真的是傻傻的分不清楚 不知道什么时候使用节流 什么时候使用防抖 1 节流 方法1 在 utils js 文件里面加入下面的方法 节流 export function
  • Android常见内存泄漏

    1 什么是内存泄露 内存泄漏 Memory Leak 是指程序中已动态分配的堆内存由于某种原因未释放或无法释放 造成系统内存的浪费 导致程序运行速度减慢甚至系统崩溃 内存溢出OOM 等严重后果 内存泄露的危害 用户对单次的内存泄漏并没有什么
  • C++ 简单工厂模式

    文章目录 介绍 场景分析 二 代码展示 简单工厂的优点和缺点 优点 缺点 总结 介绍 简单工厂模式是属于创建型模式 工厂模式 抽象工厂模式 单例模式 建造者模式 又称之为静态工厂模式 它不属于23中设计模式之一 在简单工厂中可以根据参数的不
  • Python SSH 的远程连接并执行命令和下载文件 - 千月的python linux 系统管理指南学习笔记(23)

    在运维工作中 我们经常使用 ssh 工具远程登陆主机来执行命令 对系统进行维护 在python的自动化运维中 要执行系统命令 最方便的还是借助于 python 的 ssh 功能编写日常脚本 简化工作 下面我们说下这个工具 import pa
  • 使用NLP预测电影类型 - 多标签分类

    Introduction 上周 我对这篇关于构建多标签图像分类模型的精彩文章很感兴趣 我的数据科学家开始探索将这个想法转化为自然语言处理 NLP 问题的可能性 那篇文章展示了计算机视觉技术来预测电影的类型 所以我必须找到一种方法将该问题陈述
  • podman容器启动脚本

    Podman是一个无守护进程的容器引擎 用于在Linux系统上开发 管理和运行OCI容器 与Docker不同 Podman可以在无 root 模式下运行 安装 sudo apt install podman 或者 sudo yum inst
  • vue框架采用的模式:MVVM模式

    Vue 框架采用的模式是MVVM模式 响应式布局 MVVM模式 Model View ViewModel 与MVC模式相比 不再局限于数据单向绑定 而是能够实现数据双向绑定 同步刷新 原理 View层和Model层是通过ViewModel层
  • 【电路设计】肌电信号采集电路分析

    最近在开发肌电信号的采集 表面肌电信号是非常微弱的生物信号 正常人体表面肌电信号赋值为0 1 5mV 主要能量频段集中在10 150Hz 电路主要是根据原始信号 设计相应的放大电路 滤波电路 详细可以看这个链接
  • JAVA消息(第一篇)JMS 很重要!!!!包教包会!!不闹!!!下一篇-AMQP(wire-level protocol)

    如果看完 进入第二篇AMQP 首先大致讲一下 java 消息模块 消息 个人理解分为两种 1 同步消息 RPC调用 2 异步消息 本篇讲解部分 一 同步消息java提供了多种方案 最新比较常用的方式就是spring Http invoker
  • 关于vue使用recorder.js录音功能

    关于vue使用recorder js录音功能 1 引入外部js文件 import HZRecorder from utils HZRecorder js js文件内容 export function HZRecorder stream co
  • 资源变现小程序开通微信官方小商店教程

    前提条件非个人注册的小程序 登录小程序的微信公众后台 点击左侧菜单设置 gt 基本信息下面的 gt 服务类目 点击服务类目详情 点击添加类目 商家自营 gt 家用电器 添加好后 刷新浏览器 这个时候左侧菜单会看到交易组件 点击交易组件会看到

随机推荐

  • idea-代码格式化快捷键设置

    idea默认格式化快捷键是 Ctrl Alt L 有时会因其它软件快捷键的冲突导致失灵 设置方法如下 1 File gt Settings 2 Keymap gt Code 3 Code gt Reformat Code 4 右击Refor
  • openGL之API学习(七十四)opengl版本的历史沿革

    OpenGL源于SGI公司为其图形工作站开发的IRIS GL 在跨平台移植过程中发展成为OpenGL SGI在1992年7月发布1 0版 后成为工业标准 由成立于1992年的独立财团OpenGL Architecture Review Bo
  • rust换源

    在 HOME cargo 目录下建一个config文件 windows默认是C Users user name cargo config文件输入 source crates io registry https github com rust
  • 算法(二)

    目录 0 前言 1 海明码的使用 2 理解海明码需要明白的知识 a 奇偶校检法 b 异或运算 3 海明码的原理 a 海明码原理的概述 b 多个校检位的设计 c 校检位个数的计算 d 海明码的总结 4 举例 a 计算校检码的个数 b 计算每一
  • Unity编辑器 - 使用GL绘制控件

    Unity编辑器 使用GL绘制控件 控件较为复杂时 可能造成界面卡顿 在EditorGUI中也可以灵活使用GL绘制来提升性能 以绘制线段为例 using UnityEngine using UnityEditor public class
  • 【数据结构】树的基础知识及三种存储结构

    个人主页 阿然成长日记 点击可跳转 个人专栏 数据结构与算法 C语言进阶 不能则学 不知则问 耻于问人 决无长进 文章目录 一 树的概念与定义 二 树的有关名词 三 树的存储结构 1 双亲表示法 2 孩子表示法 3 孩子兄弟表示法 又叫二叉
  • c语言6种内部排序,数据结构6种内部排序算法的比较

    1 需求分析 1 输入数据的形式为 伪随机数产生程序产生 且每次输入数不少于100个 至少要用5组不同的输入数据 2 输出的形式为 输出关键字参加的比较次数和关键字的移动次数 关键字交换计为3次移动 的数据 3 程序能达到的功能 对起泡排序
  • docker 简单安装 redis

    1 redis的简单安装 1 1 docker 寻找 redis镜像 docker search redis 1 2 docker 拉取 redis镜像 docker pull redis 1 3 运行创建Redis 1 4 进入容器 1
  • SQL留存率问题

    什么是留存率 留存率 retention rate 通常用来衡量用户或客户的忠诚度和粘性 留存率指的是在特定时间段内 有多少人保持了对某个产品 服务 平台或应用程序的使用并继续付费或进行其他有价值的操作 通常情况下 留存率会作为一个百分比表
  • redis 连接数据库_如何连接到Redis数据库

    redis 连接数据库 介绍 Introduction Redis is an open source in memory key value data store Whether you ve installed Redis locall
  • Adblock Plus 下载

    作用 下载人数 全球超过5000万人都在使用adblock plus 这个chrome插件完全免费 能够屏蔽整个互联网广告的插件你见过吗 那就是Adblock Plus Adblock Plus牛在哪里 在谷歌开发者商店里面有4000万以上
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 团队管理中的代码评审

    代码评审在软件项目管理中是经常组织的活动 通过代码评审的工作也确实给我们的团队带来很多的益处 简单谈谈代码评审的感受 你们的团队是否也在进行代码评审 Code Review 的相关工作呢 1 为什么要组织代码评审 组织代码评审其主要目的是保
  • uni-app跨端开发微信小程序之nodejs与后端通信并动态打包项目以适应多环境开发

    摘要 这篇文章主要的目的是分享一个可与后端接口通信的自动化脚本插件 实现不同环境下可打包成不同配置的微信小程序源码 全程靠命令行自动发起请求 修改配置文件 自动编译 解放双手不是梦 看官在阅读文章前可以思考这样一个场景 有一份代码需要支持本
  • Java与设计模式(3):抽象工厂模式

    一 定义 抽象工厂模式是一种创建型设计模式 它提供了一种将相关对象组合在一起创建的方式 而无需指定它们的具体类 在抽象工厂模式中 有一个抽象工厂接口 该接口定义了一组创建相关对象的方法 每个具体的工厂类都实现了这个接口 并负责创建一组相关的
  • Xshell 使用密钥连接服务器,每次都提示:SSH服务器拒绝了密码。请再试一次

    查了很多 原来问题出在这里 1 在用户身份验证 连接方法设置为public key 2 浏览 导入你服务端下载的密钥 确定 输入密钥密码 问题解决
  • 手写js物理引擎

    先来看效果 包括混沌小球碰撞 上抛 自由落体 滚动 想要手写游戏 这些都是最基础的内容 也是一些游戏库的底层原理 开始之前 先回忆一些物理和数学知识 1 自由落体 重力相关 2 非弹性碰撞 角度 速度 3 向量 标量 4 动量守恒 动能守恒
  • 你了解API测试吗?如何充分的测试一个API?

    什么是API API代表应用程序接口 API是软件系统中的中间层 负责数据源与用户看到的图形用户界面 GUI 之间的数据通信 换句话说 API是软件的业务层 它在表示层和数据层之间创建连接 API测试侧重于所谓的应用程序业务层 这意味着与标
  • 生成式对抗网络(GAN, Generaitive Adversarial Networks)总结

    最近要做有关图像生成的工作 也是小白 今天简单学习一些有关GAN的基础知识 很浅 入个门 大神勿喷 GAN目前确实是在深度学习领域最热门 最有前景的方向之一 近几年有关于GAN的论文非常非常之多 从2016年起关于GAN的论文是爆炸性的增长
  • android图片传输三方框架,Android ImageLoader第三方框架解析

    本文实例为大家分享了Android ImageLoader框架的使用方法 供大家参考 具体内容如下 1 准备工作 1 导入universal image loader 1 9 5 jar到项目中 2 创建MyApplication继承App