glide可以加载动态gif图片。美工给了我一个100M的超大gif图片。我想用glide加载应该问题不大。就将图片放到本地用Glide加载了。
String path = FileUtils.SDPATH + "files/bg.gif";
Glide.with(Context)
.asGif()
.load(path)
.into(ImageView);
结果报了内存溢出了。说明Glide加载过大的gif图片不中。
在网上找到了另外一个加载gif的库:
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.25'
引入这个库,将那个100M的大gif动图放到drawable文件夹里。
代码去加载这个gif动图:
import android.widget.MediaController;
//加载gif动态图
private void setGifImageGif() {
gif_img = findViewById(R.id.gif_img);
gif_img.setScaleType(ImageView.ScaleType.FIT_XY);
gif_img.setImageResource(R.drawable.bg);
final MediaController mediaController = new MediaController(this);
mediaController.setMediaPlayer((GifDrawable) gif_img.getDrawable());
/**
此处可以控制gif的进度
*/
mediaController.setAnchorView(gif_img);
gif_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mediaController.show();
}
});
}
xml里的控件:
<pl.droidsonroids.gif.GifImageView
android:id="@+id/gif_img"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent" />
没有报错。正常的加载了这个100M的动态gif图片。
源码可以参考次github地址:GitHub - koral--/android-gif-drawable: Views and Drawable for displaying animated GIFs on Android