搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
IT小白
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
2022上海Java工资收入概览_上海java平均工资
2
JDBC调用SQL server的存储过程没有返回结果集的解决方法_com.microsoft.sqlserver.jdbc.sqlserverexception: 该
3
.NET框架结构体系及工作原理_.net 实现原理
4
ES6封装Axios和使用_axios es6 写法
5
arduino笔记27:mh-sensor-series + 土壤传感器_mh-sensor-series flying-fish
6
Java学习书单_jvm 书籍
7
http协议
8
清华大模型Chatglm2-6B基于P-Tuning的微调方法和微调模型使用方式(非常仔细,值得借鉴且使用自己的数据集微调未发生灾难性遗忘,效果很好)_chatglm2-6b下载
9
Qt之界面实现技巧_qt界面设计
10
如何为自己的ONLYOFFICE开发创建一个功能插件_onlyoffice开发教程
当前位置:
article
> 正文
Android的开发之&论图片加载Glide、Fresco、Picasso、ImageLoader特点和优缺点_android glideimageloader class
作者:IT小白 | 2024-02-18 07:09:42
赞
踩
android glideimageloader class
Glide
图片加载框架
一,简介:
Glide
是一款谷歌官方推荐使用的强大图片加载框架
,
作者是bumptech,这个库被广泛运用在谷歌的开源项目中。
二,功能特点:
1,图片异步加载,设置加载尺寸,设置加载动画,设置加载中和加载失败的图片,加载的图片格式丰富:JPG,PNG,GIF,WEBP支持设置缩略图
2,加载的图片路径多种:网络本地资源assets等
3,缓存特点:跳过内存缓存,缓存动态清理,设置缓存策略
4,其他特点:生命周期集成,设置动态转换,设置下载优先级
三:磁盘缓存策略
Glide
磁盘缓存策略分为四种,默认的是结果:
1.所有:缓存原图(SOURCE)和处理图(RESULT)
2.NONE:什么都不缓存
3.SOURCE:只缓存原图(SOURCE)
4.RESULT:只缓存处理图(RESULT) - 默认值
组合策略
:
和其他三级缓存一样,滑翔的缓存读取顺序是
内存(使用LRU算法) - >磁盘(使用弱引用缓存正在使用的资源) - >网络
四,优点与缺点:
优点:
1,使用简单,可配置度高,自适应程度高
2,多样化媒体加载:Glide不仅是一个图片缓存,支持常见的图片格式jpg png gif webp
3,
生命周期集成:根据Activity/fragment生命周期自动管理请求
将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载
4,高效的缓存策略
(1)支持Memory和Disk图片缓存
(2)Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的
(3)内存开销小,Glide加载的图片质量要差于Picasso,因为Glide默认的Bitmap格式是RGB_565 ,比ARGB_8888格式的内存开销要小一半。
(4)高效处理bitmap,使用bitmap pool使bitmap复用,主动调用recycle回收需要回收的bitmap,减少系统回收压力
(
5
)
图片缓存->媒体缓存
(
6
)
支持优先级处理
(
7
)
支持 okhttp、Volley
缺点
(1)使用方法复杂
(2)由于Glide其功能强大,所以使用的方法非常多,其源码也相对的复杂
(3)包较大
Fresco
图片加载框架
一,简介:
Fresco
是Facebook的最新推出的一款用于Android的应用中展示图片的强大图片库。
二,主要特点:
(1)两个内存缓存加上本地缓存构成了三级缓存
(2)
渐进式呈现图片
(3)
支持加载的Gif图和WebP的格式
三,主要功能:
带进度条的图片,图片的不同裁剪,圆形和圆角图片,渐进式展示图片,GIF动画图片,多图请求及图片复用,图片加载监听,图片缩放和旋转,修改图片和动态展示图片等功
四,优点与缺点:
优点:
(1)内存自动回收。图片不可见时,会及时自动释放所占用的内存,尽可能地避免OOM
(2)三级缓存机制。两级内存缓存(解码的与未解码的)+一级磁盘缓存,提升加载速度,节省内存占用空间
(3)支持各种加载场景。如动图加载,高斯模糊等常见的图片加载场景。另外还提供了独特的渐进式加载,先加载小图再加载大图,加载进度等功能(很强大) 。
缺点:
(1)框架较大,影响Apk体积
(2)侵入性较强。须使用它提供的SimpleDraweeView来代替ImageView的加载显示图片
Picasso
图片加载框架
一,简介:
Picasso
是
Square公司出品的一个强大的图片下载和缓存图片库
二,
Picasso
特点和功能
1、
Picasso是全尺寸下载图片
2、Picasso默认的缓存格式为ARGB_888
3、链式调用,使用简单;
4、具有一般图片框架的基础功能;
5、方便的图片转换;
(图片高斯模糊,添加圆角,做度灰处理,圆形图片)
6、加载过程监听和错误处理;
7、自动添加磁盘和内存二级缓存;
8、支持多种数据源加载。
9、Picasso默认不支持Gif图片加载。Picasso库很小,类也很少,库仅118KB大小。
10、Picasso支持
调试和日志
三:Picasso缓存策略
1、缓存(Disk and Memory):
Picasso有内存缓存(Memory)和磁盘缓存(Disk)
(1)LRU内存缓存为可用应用程序RAM的15%
(2)2%存储空间的磁盘缓存高达50MB但不低于5MB。
(3)三个用于磁盘和网络访问的下载线程。
2、Picasso内存缓存是使用的LRU策略的缓存实现:
memory(内存)-> disk(磁盘)-> network(网上)。
默认情况下,Picasso内存缓存和磁盘缓存都开启了的,
3、Picasso提供了设置缓存策略的方法。
1、memoryPolicy设置内存缓存策略
NO_CACHE:表示处理请求的时候跳过检查内存缓存
NO_STORE:表示请求成功之后,不会最终的结果存到内存。
2、networkPolicy设置磁盘缓存策略
NO_CACHE:表示处理请求的时候跳过处理磁盘缓存
NO_STORE:表示请求成功后,不会结果缓存到Disk,但是这个只对OkHttp有效 。OFFLINE:Picasso会强制这次请求从缓存中获取结果,不会发起网络请求,不管缓存中能否获取到结果。
四:Picasso解决了android中加载图片时需要解决的一些常见问题:
1、在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
2、使用复杂的图片压缩转换来尽可能的减少内存消耗
3、自带内存和硬盘二级缓存功能
五:缺点:
不支持 GIF, 缓存的图片未缩放, 并且默认使用
,使用ARGB_8888缓存图片, 缓存体积大.
六:Picasso和Glide
对比的优缺点
1.Picasso和Glide的withi后面的参数不同
(1)Picasso.with(这里只能传入上下文) .
(2)Glide.with(可以传context,activity,fragment)
2.加载后图片质量不同(Picasso:ARGB-8888,Glide:RGB-565)
3.加载Gif图片(Picasso不能加载Gif图片,Glide可以加载Gif图片)
4.缓存策略和加载速度.
(1)Picasso缓存的是全尺寸,而 Glide的缓存的更ImageView的尺寸相同.
(2)调整ImageView大小,Picasso只缓存一个全尺寸,Glide则会为每种大小都缓存一次.
ImageLoader
图片加载框架
一:简介:
ImageLoader 是最早开源的 Android 图片缓存库, 强大的缓存机制, 早期使用这个图片加载框架的Android应用非常多。
二:特点和功能:
(1).使用多线程加载图片(
数据源可以是
网络,本地,资源,assets
)
(2).灵活配置ImageLoader的基本参数,包括线程数、
图片下载器,内存缓存策略,硬盘缓存策略
、缓存方式、图片显示选项等;
(3).图片异步加载缓存机制,包括内存缓存及SDCard缓存;
(4).采用监听器监听图片加载过程及相应事件的处理;
(5).配置加载的图片显示选项,比如图片的圆角处理及渐变动画。
根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存
提供在较慢的网络下对图片进行加载
三:缓存策略
Imageloader内存缓存策略
(1)只使用的是强引用缓存
LruMemoryCache(默认的内存缓存类,缓存的是bitmap的强引用)
(2)使用强引用和弱引用相结合的缓存有
UsingFreqLimitedMemoryCache(缓存的图片总量超过限定值,删除使用频率最小的bitmap)
LRULimitedMemoryCache(使用的lru算法,和LruMemoryCache不同的是他缓存的是bitmap的弱引用)
FIFOLimitedMemoryCache(先进先出的缓存策略,当超过设定值,先删除最先加入缓存的bitmap)
LargestLimitedMemoryCache(当超过缓存限定值,先删除最大的bitmap对象)
LimitedAgeMemoryCache(当 bitmap加入缓存中的时间超过我们设定的值,将其删除)
(3)只使用弱引用缓存
WeakMemoryCache(缓存bitmap的总大小没有限制,不足就是不稳定,缓存的图片容易被回收)
Imageloader
硬盘缓存
FileCountLimitedDiscCache(设定缓存图片的个数,超过设定值,删除掉最先加入到硬盘的文件)
LimitedAgeDiscCache(设定文件存活的最长时间,当超过这个值,就删除该文件)
TotalSizeLimitedDiscCache(设定缓存bitmap的最大值,当超过这个值,删除最先加入到硬盘的文件)
UnlimitedDiscCache(这个缓存类没有任何的限制)
优点:
(1) 支持下载进度监听
(2) 可以在 View 滚动中暂停图片加载
通过 PauseOnScrollListener 接口可以在 View 滚动中暂停图片加载。
(3) 默认实现多种内存缓存算法 这几个图片缓存都可以配置缓存算法,不过 ImageLoader 默认实现了较多缓存算法,如 Size 最大先删除、使用最少先删除、最近最少使用、先进先删除、时间最长先删除等。
(4) 支持本地缓存文件名规则定义
缺点:
不支持GIF图片加载, 使用稍微繁琐, 并且缓存机制没有和http的缓
存很好的结合, 完全是自己的一套缓存机制(完整大小).
总结:最后放一张网络上找的图片
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop】
推荐阅读
article
android
python
ide_轻量级Python
IDE
:
Thonny
...
1. 简介
Thonny
是基于
python
内置图形库tkinter开发出来的支持多平台(windows,Mac,Linux...
赞
踩
article
android
微信
浮窗实现_
微信
Android
内测
版
更新
:小
程序
也有权限管理了...
9 月 11 日,有读者告诉我们,
微信
7.0.7 for
Android
内测
版已悄然上线。要知道,iOS 的版本号已...
赞
踩
article
Elastic
search:适用于
iOS
和
Android
本机
应用程序
的
Elastic
AP...
适用于本机
应用程序
的
Elastic
APM
提供传出 HTTP 请求和视图加载的自动检测,捕获自定义事件、错误和崩溃,...
赞
踩
article
java
相机
开发_控制
相机
|
Android
开发者 |
Android
Develope...
在本课程中,我们将讨论如何使用框架 API 直接控制
相机
硬件。与从已有
相机
应用请求照片或视频相比,直接控制设备
相机
所需要...
赞
踩
article
Android
Camera
编程
从
入门到
精通
...
一、前言想通过一篇文章就让我们
精通
Android
的
Camera
那肯定是不可能的事情。但通过对
Android
中...
赞
踩
article
Android
camera
相机
开发
拍照
功能_
android
external
-usb-
camera
...
在
Android
5.0(SDK 21)中,Google使用Camera2替代了Camera接口。Camera2在接口和...
赞
踩
article
Android
Camera
相机程序编写...
Android
Camera
相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在An...
赞
踩
article
Android
基于
Camera
X开发
Camera
预览(
Java
)_
java
开发
android
相机...
Android
基于
Camera
X开发
Camera
预览(
Java
)开发环境:基于
Camera
X: 1.0.0-alph...
赞
踩
article
OpenCV
for
Android
设置
预览
界面尺寸_
android
opencv
圆形
预览
...
OpenCV
for
Android
设置
预览
界面尺寸我的
Android
项目中用到了
opencv
的人脸识别,所以把ope...
赞
踩
article
RK3288
[
android
7.1]调试笔记 修改默认的
PreviewSize
预览
分辨率
和Pict...
RK3288
[
android
7.0]调试笔记 修改默认的
PreviewSize
预览
分辨率
和
PictureSize
照片大...
赞
踩
article
Android
camera
onPreviewFrame
图
片旋转问题_
android
onpre...
Android
开发中调用到摄像头
camera
及截
图
。通过测试发现,调用前置摄像头的预览
图
和截
图
、调用后置摄像头的预览
图
和...
赞
踩
article
android
studio
导入
eclipse
或者
android
studio
工程
文件
的超简技巧_...
android
studio
导入
工程
_
ace
studio
工程
文件
ace
studio
工程
文件
...
赞
踩
article
Android
- Studio
快捷键
_
ace
studio
快捷键
...
这是项目中都会用到的一些
快捷键
,我只想到了这么些,有新的会再加。Ctrl + Z 撤销Ctrl + D 粘贴当前行到下一...
赞
踩
article
Android
11.0
SystemUI
禁用长按
recent
键的
分屏
功能
...
在
11.0
的系统rom产品定制化中,系统对于多窗口模式默认会有
分屏
功能
的,但是在某些产品中,需要禁用
分屏
模式,所以需要...
赞
踩
article
Android
Compose 一个音视频APP——
Magic
Music
Player
...
此项目基于网易云API,使用Compose UI编写而成,项目整体采用MVVM架构,主要实现主题切换(适配深色模式)、音...
赞
踩
article
UNITY
基础之 实现动态
加载
网络
端、PC端和
ANDROID
端指定路径下
的
图片
的
简单方法_un...
unity c#_
unity3d
加载
网络
图片
unity3d
加载
网络
图片
一、简单介绍 Uni...
赞
踩
article
Unity
基础
之 实现动态
加载
网络
端
、PC
端
和
Android
端
指定路径下的
图片
的简单方法_un...
路径
Unity
基础
之 实现动态
加载
网络
端
、PC
端
和
Android
端
指定路径下的
图片
的简单方法目录路径
Unity
基...
赞
踩
article
Android7.0
webview
android
.
content
.res.
Resources
$N...
Android7.0
webview
android
.
content
.res.
Resources
$NotFoundExc...
赞
踩
article
ios
android
性能
测试工具
,史上最全
的
iOS
各种
测试工具
集锦...
引言随着移动互联网
的
兴起,APP 测试
的
越来越被重视!Android 系统因为自己
的
开源性,
测试工具
和测试方法比较广为流...
赞
踩
article
Unity2022.2 版本
Android
打包环境踩坑_
unity
android
打包升级an...
unity
2022.2
Android
打包设置记录_
unity
android
打包升级
android
player的t...
赞
踩
相关标签
android python ide
android 微信浮窗实现
elasticsearch
大数据
搜索引擎
全文检索
android
ios
java相机开发
移动开发
设计模式
camera
拍照
java
opencv
设置预览屏幕尺寸
Android
Camera
onPreviewFrame
图片旋转
相机预览
android-studio
导入工程
原创