Android开发之加载GIF
2020/09/16
共 438 字
约 2 分钟
归档: 学习
安卓11都出了,结果加载个Gif动图这么麻烦,Webp格式的动图更麻烦
Picasso,Glide,Fresco对比分析这篇文章中对比了三个图片加载框架的优劣,Glide最轻量性能也最佳,引入与使用也十分方便,但是实际使用的时候还是不能直接加载Webp格式的动图;fresco底包更大一些,用法较复杂,更适用于需要高性能加载大量图片的场景。
Glide
Glide由谷歌主导,添加一个依赖就可以了
repositories {
google()
jcenter()
}
dependencies {
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
}
Glide可直接加载图片到imageView
<ImageView
android:id="@+id/my_image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
// For a simple view:
@Override public void onCreate(Bundle savedInstanceState) {
...
ImageView imageView = (ImageView) findViewById(R.id.my_image_view);
Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
}
Glide如果要支持Webp格式的动图,需要引入GlideWebpDecoder
Fresco
Fresco由Facebook主导,想要支持Gif动图需引入另外的依赖,并且只能用在自家的SimpleDraweeView中
dependencies {
// 其他依赖
compile 'com.facebook.fresco:fresco:0.12.0'
// 在 API < 14 上的机器支持 WebP 时,需要添加
compile 'com.facebook.fresco:animated-base-support:0.12.0'
// 支持 GIF 动图,需要添加
compile 'com.facebook.fresco:animated-gif:0.12.0'
// 支持 WebP (静态图+动图),需要添加
compile 'com.facebook.fresco:animated-webp:0.12.0'
compile 'com.facebook.fresco:webpsupport:0.12.0'
// 仅支持 WebP 静态图,需要添加
compile 'com.facebook.fresco:webpsupport:0.12.0'
}
加入SimpleDraweeView:
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="130dp"
android:layout_height="130dp"
fresco:placeholderImage="@drawable/my_drawable"
/>
加入图片
Uri uri = Uri.parse("https://raw.githubusercontent.com/facebook/fresco/gh-pages/static/logo.png");
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);
就我目前的需求来看,Glide足够用了。
留言