作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何利用 Glide 缓存加载通知图标?这些是 IconCompat用于 Person MessagingStyle 中的对象通知和Shortcuts .另外,Bubbles需要同时使用这两者。
我将 Glid 用作休闲:
private IconCompat loadIcon(String url) throws ExecutionException, InterruptedException {
RequestOptions requestOptions = new RequestOptions().override(ADAPTIVE_BITMAP_SIZE);
Bitmap bitmap = Glide.with(G.app).asBitmap().apply(requestOptions).load(url).submit().get();
return IconCompat.createWithAdaptiveBitmap(bitmap);
}
我有几个关于这个解决方案的问题
ADAPTIVE_BITMAP_SIZE
的大小应该是多少?最佳答案
为异步加载图标创建自定义 TargetWrapper
。使用 TargetWrapper 实例配置 Glide。
asyncLoadIcon("http://YOUR_URL.com"){
val person = Person.Builder()
.setName("John Doe")
.setIcon(it)
notificationManagerHelper.notify(
person.build()
)
}
异步加载位图然后包装到图标中的辅助函数
private fun asyncLoadIcon(avatar: String?, block: (IconCompat?) -> Unit) {
if (avatar.isNullOrEmpty())
block(null)
else {
GlideHelper.createWithAdaptiveBitmap(requireContext(), avatar) { result ->
if (result?.isSuccess() == true)
block(IconCompat.createWithAdaptiveBitmap(result.toData()))
else block(null)
}
}
}
这是 Glide 图像请求函数,通过回调检索位图。
fun createWithAdaptiveBitmap(
context: Context,
url: String,
listener: ((Result<Bitmap>?) -> Unit)
) {
val options = RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.DATA)
.override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.dontTransform()
Glide.with(context)
.asBitmap()
.apply(options)
.load(url)
.into(CustomTargetWrapper(listener))
}
用于异步加载位图的 CustomTargetWrapper 类。
class CustomTargetWrapper(
private val listener: ((Result<Bitmap>?) -> Unit)
) : CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
listener.invoke(Result.Success(resource))
}
override fun onLoadCleared(placeholder: Drawable?) {
listener.invoke(null)
}
override fun onLoadFailed(errorDrawable: Drawable?) {
super.onLoadFailed(errorDrawable)
listener.invoke(Result.Error(IOException("Glide load failed")))
}
}
关于android - 如何使用 Glide 使用 AdaptiveBitmap 加载 IconCompat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65025463/
如何利用 Glide 缓存加载通知图标?这些是 IconCompat用于 Person MessagingStyle 中的对象通知和Shortcuts .另外,Bubbles需要同时使用这两者。 我将
我是一名优秀的程序员,十分优秀!