加载Gif图片的两种方法和常见问题

2020-05-25  本文已影响0人  加油小李

方法一   使用Gif三方库加载

 1, 在moudle的build.gradle文件的dependencies节点下加上下面这句代码

     implementation  'pl.droidsonroids.gif:android-gif-drawable:1.2.16'

三方库的依赖

2, 静态加载: 在布局文件中引用三方库的GifImageView静态加载如下所示

<pl.droidsonroids.gif.GifImageView    

   android:id="@+id/gif_view"

    android:layout_height="match_parent"

    android:layout_width="match_parent"

    android:scaleType="centerCrop"

    tools:src="@mipmap/app_splash"/>

本图是在约束布局下引用方法

动态加载

动态加载

从上图可以看到 创建GifGDrawable的第二个参数可以是一个本地资源ID,也可以是一个本地文件,还可以是一个Uri

顺便贴上代码:

//使用三方库加载Gif

  private  void  gifDrawableFun() {

   try {

           gifDrawable =new GifDrawable(getResources(),           R.mipmap.app_splash);

         }catch (IOException e) {

    e.printStackTrace();

       }

            gif_view.setImageDrawable(gifDrawable);

}


方法二   使用Glide加载:

  1, 在moudle的build.gradle文件的dependencies节点下加上下面这句代码

Glide的依赖引入

implementation   'com.github.bumptech.glide:glide:4.11.0'

2,调用下面的方法

这里的R.mipmap.app_splash是我本地gif图片资源,同样你也可以传入一个uri;

//使用Glide加载Gif

private void GlideFun(@NonNull View imageView) {

      Glide.with(SplashActivity.this)

               .load(R.mipmap.app_splash)

                .listener(new RequestListener() {

   @Override

              public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target,

                                    boolean isFirstResource) {

                                return false;

                             }

     @Override

        public    boolean    onResourceReady(Drawable resource, Object model, Target target,

                                      DataSource dataSource, boolean isFirstResource) {

                        if (resourceinstanceof GifDrawable){

                        //Glide默认会加载多次这里设置只加载1次

                            ((GifDrawable) resource).setLoopCount(1);

          }

                          return false;

        }

                         }).into((ImageView) imageView);

}

注意事项:

至此两种加载Gif图片的方法已经写完但是你会发现在加载图片的最开始会先出现一个空白页面才开始加载gif图片.

这个时候需要在我们的Manifast文件下的activity节点节点下加上一个跟gif背景一直的主题我是这样加的:

加主题

android:theme="@style/libSplashTheme">

主题

<style name="libSplashTheme" parent="Theme.AppCompat.DayNight.NoActionBar">

    <item name="android:windowBackground">@color/color_splash

</style>

加主题颜色


<color name="color_splash">#151c2e</color>

上一篇下一篇

猜你喜欢

热点阅读