Android从零单排系列九《Android视图控件——ImageView》
Posted 再见孙悟空_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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体积使用较繁琐。
今天就先总结到这,后面如果有问题大家可以评论区留言或者给我发私信。
以上是关于Android从零单排系列九《Android视图控件——ImageView》的主要内容,如果未能解决你的问题,请参考以下文章
Android从零单排系列九《Android视图控件——ImageView》
Android从零单排系列九《Android视图控件——ImageView》
Android从零单排系列八《Android视图控件——Button》
Android从零单排系列八《Android视图控件——Button》