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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐