泰尔滑翔如果偏好
设置我有我的应用程序内的几个RecyclerView
的,和所有的人都该有一个ImageView
项目,这是与Glide
进一步填充,这样不加载图片:泰尔滑翔如果偏好
Glide.with(context) .load(imageUrl)
.asBitmap()
.error(R.drawable.placeholder_avatar)
.centerCrop()
.into(mAvatarImageView);
在我的首选项屏幕中,用户可以禁用加载所有远程图像以节省带宽。 什么是最好的方式告诉Glide
不加载图像,而不在所有RecyclerView
适配器内使用经典的if-else条件,这违反了DRY原则?
我正在寻找这样的方法:
.shouldLoad(UserSettings.getInstance().isImageLoadingEnabled());
回答:
如果你决定使用Kotlin
您可以创建所需的扩展功能:
fun <T> RequestBuilder<T>.shouldLoad(neededToLoad : Boolean) : RequestBuilder<T> { if(!neededToLoad) {
return this.load("") // If not needed to load - remove image source
}
return this // Continue without changes
}
然后你可以使用它如你有问题描述:
Glide.with(context) .load(imageUrl)
.shouldLoad(false)
.into(imageView)
这是公平地说,你可以用shouldLoad()
功能只创建一个Kotlin
文件和Java
使用它,但代码变得丑陋:
shouldLoad(Glide.with(this) .load(imageUrl), false)
.into(imageView);
OR
RequestBuilder<Drawable> requestBuilder = Glide.with(this) .load(imageUrl);
requestBuilder = shouldLoad(requestBuilder, true);
requestBuilder.into(imageView);
回答:
假设你正在使用滑翔V4,有专门为此设计了一个请求选项:RequestOptions.onlyRetrieveFromCache(boolean flag)
。启用时,只加载内存或磁盘缓存中已有的资源,有效防止来自网络的负载并节省带宽。
如果您使用Glide v4生成的API,则此选项可直接在GlideApp.with(context).asBitmap()
返回的GlideRequest
上使用。 否则,您必须创建一个RequestOptions
使用此标志启用,apply
它:
RequestOptions options = new RequestOptions().onlyRetrieveFromCache(true); Glide.with(context).asBitmap()
.apply(options)
.error(R.drawable.placeholder_avatar)
.centerCrop()
.into(mAvatarImageView);
以上是 泰尔滑翔如果偏好 的全部内容, 来源链接: utcz.com/qa/265160.html