Fresco特点:
Fresco的Image Pipeline允许你用很多种方式来自定义图片加载过程,比如:
- 为同一个图片指定不同的远程路径,或者使用已经存在本地缓存中的图片
- 先显示一个低清晰度的图片,等高清图下载完之后再显示高清图
- 加载完成回调通知
- 对于本地图,如有EXIF缩略图,在大图加载完成之前,可先显示缩略图
- 缩放或者旋转图片
- 对已下载的图片再次处理
- SimpleDraweeView
图像的渐进式呈现体积太大2~3M
也可加载gif、webP
5.0以下系统,把bitmap保存到ashmen(匿名共享内存机制),不会启动gc,使的界面不会因为gc而卡死,
- 支持WebP解码,即使在早先对WebP支持不完善的Android系统上也能正常使用!
- 官方详情地址:https://www.fresco-cn.org/docs/index.html
- 可以自定义图片形状代码:
- <com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/id_main_sdv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
fresco:actualImageScaleType="focusCrop" //加载得到的图片的缩放类型
fresco:fadeDuration="1000" //进度条,占位图片消失,加载图片展现的时间间隔
fresco:failureImage="@drawable/imgbg" //加载失败之后显示的图片
fresco:failureImageScaleType="centerInside" //图片缩放类型
fresco:placeholderImage="@drawable/imgbg" //占位图片(未加载之前显示的图片)
fresco:placeholderImageScaleType="fitCenter"
fresco:progressBarAutoRotateInterval="1000" //加载进度条图片旋转周期
fresco:progressBarImage="@drawable/progress_bar" //加载进度条图片
fresco:progressBarImageScaleType="centerInside"
fresco:retryImage="@mipmap/ic_launcher" //提示重新加载的图片资源
fresco:retryImageScaleType="centerCrop"
fresco:backgroundImage="@color/colorWhite" //背景图片
fresco:roundAsCircle="false" //是否要将图片剪切成圆形
fresco:viewAspectRatio="1" //图片宽高比
fresco:overlayImage="@drawable/overlay" //在图片上方覆盖一个图片资源
fresco:pressedStateOverlayImage="@color/colorBlack"
fresco:roundedCornerRadius="20dp" //圆角角度,
fresco:roundTopLeft="true" //设置哪个角需要变成圆角
fresco:roundTopRight="false"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="true"
fresco:roundWithOverlayColor="@color/colorWhite" //圆角部分填充色
fresco:roundingBorderWidth="2dp" //边框宽度
fresco:roundingBorderColor="@color/colorBlack" //边框填充色
/>
Glide特点:
可以传入activity、fragment,图片的加载会和activity、fragment生命周期一致(比如onPause暂停、onResume重新加载,onDestory销毁)
默认Bitmap格式RGB_565(比ARGB_8888小一半,位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真;RGB_565无法显示图片本身的透明度)
Glide加载的大小与imageview一致
可加载gif、WebP
可配置图片动画
体积500 KB
代码:
implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
检查一下是否已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
public class imageActivity extends Activity {
@BindView(R.id.img_iv)
ImageView imgIv;
private static URL url;
//Glide优点缓存,Gif动图
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_activity_layou);
ButterKnife.bind(this);
//view 是需要显示图片的ImageView, url是图片的网络地址。
try {
url = new URL("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=2524970374,1771992642&fm=11&gp=0.jpg");
} catch (MalformedURLException e) {
e.printStackTrace();
}
Glide.with(imgIv.getContext())
.load(url)
.placeholder(R.drawable.ic_launcher)
.into(imgIv);
}
}
官方详情地址:https://muyangmin.github.io/glide-docs-cn/doc/transitions.html