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