Android开发之加载GIF

2020/09/16
共 438 字
约 2 分钟
归档: 学习
标签: Android

安卓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足够用了。

留言

本站已运行
© 2024 Jack  由 Hexo 驱动
复制成功