Fragment中使用开源banner用Glide加载网络图片显示不出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment中使用开源banner用Glide加载网络图片显示不出来相关的知识,希望对你有一定的参考价值。

参考技术A APP首页用的是Fragment,然后用开源库Banner来实现轮播图,图片加载用的是Glide,然而一张都出不来。

使用Glide的依赖为

Glide4.0以上需要自定义一个类

build之后会生成一个GlideApp.这样就可以使用了。

如果你添加的依赖为

build的时候会报错,此时你需要在gradle的defaultconfig添加下面这句

这样就可以build成功。

在使用banner的时候需要设置图片加载器:

其中ImageLoader是banner中封装好的,我们只需要继承一下即可。
在这里需要注意的是glide中的上下文如果使用的是displayImage中的context,也可能导致加载图片不出来。从网上资料查阅得,Glide获取容器生命周期的机制与其他开源框架产生了冲突,故而导致图片加载失效

解决的方法有两种:

1、上下文需要填

2、换用其他的第三方图片加载

在这里使用的是ImageLoader。

依赖为:

在Application中初始化

然后再banner中设置

还有一种是9.0的系统导致图片显示不出来,因此需要在

设置android:usesCleartextTraffic="true"即可

初始化:Glide.java

这篇文章,我们从Glide.with来展开了解一下Glide的源码。

Glide.with有多个重载,with方法的参数有可能是Context、Activity、Fragment等。

请记住一点,Glide的context需要是Application级别的Context,不要在生命周期事件中开始和停止。

下面的方法可以在fragment 或 activity 生命周期之外使用 (比如 services,notification thumbnails).

  public static RequestManager with(@NonNull Context context) 
    return getRetriever(context).get(context);
  

下面这个和给定的Activity的生命周期绑定并使用它默认的配置

  public static RequestManager with(@NonNull Activity activity) 
    return getRetriever(activity).get(activity);
  

下面这个针对 androidx.fragment.app.FragmentActivity 类型的

 public static RequestManager with(@NonNull FragmentActivity activity) 
    return getRetriever(activity).get(activity);
  

下面这个针对 androidx.fragment.app.Fragment 类型的 <

以上是关于Fragment中使用开源banner用Glide加载网络图片显示不出来的主要内容,如果未能解决你的问题,请参考以下文章

初始化:Glide.java

初始化:Glide.java

初始化:Glide.java

Glide.with(Activity) 也是让 Activity 创建出一个 Fragment ,在 Fragment 的各个生命周期方法内插入回调函数后,执行代码来实现的

安卓笔记——轮播图

Glide开源库的使用