【Android从零单排系列九】《Android视图控件——ImageView》
目录
2.图片框架ImageLoader,Picasso,Fresco,Glide对比
前言
小伙伴们,在上文中我们介绍了Android视图控件Button控件,本文我们继续盘点,介绍一下Android视图控件中的第四个控件——ImageView。
一.ImageView基本介绍
在 Android 应用开发中,我们通常使用 ImageView 来显示图片。
二.ImageView常用主要属性介绍
android:src | 设置图片资源 |
---|---|
android:scaleType | 设置图片缩放类型 |
android:alpha | 设置图片透明度 |
src
src 设置图片资源,接受要展示的图片资源。
backGround 是 View(ImageView是View的子类)的背景,会把图片拉大铺满整个View。
scaleType
- fitStart:保持宽高比例缩放图片,直到较长的边与image的边长相等,缩放完成后将图片放在ImageView的左上角
- fitCenter:默认值,同上,缩放后放中间
- fitEnd:同上,缩放后放右下角
- fitXY:对图像横纵方向进行独立缩放,使得该图片安全适应imageview,但图片宽高比可能发生改变
- center:保持原图大小,显示在中心,当原图大小大于imageview大小,超过部分裁剪处理
- centerCrop:保持宽高比缩放,直到完全覆盖imageview,可能出现图片显示不完整
- centerInside:保持宽高比缩放,知道imageview能完全显示图片
- matrix:不改变原图大小,从imageview左上角开始绘制原图,原图超过imageview的部分作裁剪处理
alpha
设置透明度
<ImageView
android:layout_width="260dp"
android:layout_height="260dp"
android:background="@mipmap/ic_launcher"/>
<ImageView
android:layout_width="260dp"
android:layout_height="260dp"
android:alpha="0.3"
android:src="@mipmap/ic_launcher" />
三.imageView几种加载图片方式解析
imaegView.setImageBitmap(); imaegView.setImageResource(); imaegView.setImageDrawable(); imaegView.setImageURI();
imaegView.setBackground(); imaegView.setBackgroundResource(); imaegView.setBackgroundDrawable();
详细的参见:Android 中ImageView 显示图片的几种方法简要分析_再见孙悟空_的博客-CSDN博客
四.图片加载框架
1.图片加载框架
- imageloader
- picasso
- Glide
- Fresco
ImageLoader:旨在为图像加载,缓存和显示提供强大,灵活可定制的工具。他提供了大量的配置选项和良好的控制图像加载和缓存过程。
Picasso:和Square的网络库一起能发挥最大作用,因为Picasso可以选择将网络请求的缓存部分交给了okhttp实现
Glide:模仿了Picasso的API,而且在他的基础上加了很多的扩展(比如gif等支持),Glide默认的Bitmap格式是RGB_565,比 Picasso默认的ARGB_8888格式的内存开销要小一半;Picasso缓存的是全尺寸的(只缓存一中),而Glide缓存的是跟ImageView尺寸相同的(即56*56和128*128是两个缓存)。
Fresco:最大的又是在于5.0以下(最低2.3)的Bitmap加载。在5.0以下系统,Fresco将图片放到一个特别的内存区域(Ashmem区)。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。为什么说5.0以下呢?因为在5.0系统以后系统默认就是存储在Ashmem区了。
2.图片框架ImageLoader,Picasso,Fresco,Glide对比
ImageLoader
比较老的框架,稳定,加载速度适中,缺点在于不支持GIF图片加载,使用稍微繁琐,并且缓存机制没有和http的缓存很好的结合,完全是自己的一套缓存机制
Picasso
使用方便,一行代码完成加载图片显示,框架体积小
缺点在于不支持GIF,并且他可能是想让服务器去处理图片的缩放,他缓存的图片是未缩放的,并且默认使用ARGB_8888格式缓存图片,缓存体积大
Glide
支持GIF图片的加载,图片缓存也会自动缩放,默认使用RGB_565格式缓存图片,是Picasso缓存体积的一半
Fresco
优点:
1.图片存储在安卓系统的匿名共享内存,而不是虚拟机的堆内存中,图片的中间缓冲数据也存放在本地堆内存,所以,应用程序有更多的内存使用,不会因为图片加载而导致oom,同时也减少垃圾回收器频繁回收Bitmap导致的界面卡顿,性能更高。
2.渐进式加载JPEG图片,支持图片从模糊到清晰加载
3.图片可以以任意的中心店显示在ImageView,而不仅仅是图片的中心
4.JPEG图片改变大小也是在native进行的,不是在虚拟机的堆内存,同样减少OOM
5.很少的支持GIF图片的显示
缺点:
框架较大,影响APK体积使用较繁琐。
今天就先总结到这,后面如果有问题大家可以评论区留言或者给我发私信。
相关文章
- LibreOffice 7.5 发布:漂亮的新应用图标和酷炫功能
- elementary OS 7 发布
- Windows 应用兼容层 Wine 8.1 发布:默认启用“Windows 10”前缀
- 微软正测试新功能:当 Windows 11 有新的小组件可用时会提醒通知
- 解析分布式存储选型和应用九个典型问题
- ClickHouse在自助行为分析场景的实践应用
- Chrome DevTools 远程调试安卓网页的原理
- Uni-app + Vue3 页面如何跳转及传参?
- 微软证实系统还原点会损坏 Windows 11 22H2 版本应用程序
- 巧用 Transition 实现短视频 APP 点赞动画
- 初学者试试,HarmonyOS应用开发者基础认证
- 媒体实测微软 Windows 开发工具包 2023:存在不兼容 HDR 显示器、某些应用无法运行等问题
- 快速了解Navigator API SetAppBadge
- 微软 Windows 11 Dev 预览版 Build 25276 发布,应用兼容问题对话框 UI 改进
- 基于Next.js、Prisma、Postgres和Fastfy构建全栈APP
- 开始菜单搜索框变圆角,微软 Windows 11 Beta 预览版 22621.1095 和 22623.1095 发布
- 2022-2023 十大应用开发趋势
- 观远数据发布业内首部《移动BI白皮书》,深入业务数字化场景重新定义移动BI
- Windows 10 学院:不借助第三方工具如何卸载 Windows 10 预装应用
- 正处高质量发展期,我国大数据产业突破1.3万亿元