[英]How can I get bitmap using glide in onCreate?
我正在使用MVVM模型。 所以我首先要做的是从改造中获取包含 URL 和其他内容的数据。
其次是从 URL 获取图像并在第一次处理后通知Viewpager 。 我做了第一个。 但是当我尝试第二个过程时,发生了错误
java.lang.IllegalArgumentException:您必须在后台线程上调用此方法
我参考了这个站点http://bumptech.github.io/glide/doc/getting-started.html#background-threads在后台线程上使用 glide。
我不必使用Asynctask来观察这是我开发的约束。 我该如何解决第二个过程?
detailViewModel.getIndexItem().observe(this, Observer<DetailModel>(){
t->
binding.item = t
image_list = binding.item.thumbnail_list_320.toString().split("#")
for(image in image_list) {
val futureTarget: FutureTarget<Bitmap> = Glide.with(context)
.asBitmap()
.load(image)
.submit(500, 500)
val bitmap = futureTarget.get()
bitmaps.add(bitmap).apply {
if(this){
viewPagerAdapter.notifyDataSetChanged()
transitionLayout.visibility=View.GONE
detailLayout.visibility=View.VISIBLE
}
}
}
})
如果你想在 UI 线程上获取位图,实现如下,你可以尝试
detailViewModel.getIndexItem().observe(this, Observer<DetailModel>(){
t->
binding.item = t
image_list = binding.item.thumbnail_list_320.toString().split("#")
for(image in image_list) {
Glide.with(this)
.asBitmap()
.override(500, 500)
.load("image url")
.into( object: CustomTarget<Bitmap>() {
override fun onResourceReady(
bitmap: Bitmap,
transition: Transition<in Bitmap>?
) {
// UI Thread
Log.e(TAG, "$bitmap")
bitmaps.add(bitmap).apply {
if(this){
viewPagerAdapter.notifyDataSetChanged()
transitionLayout.visibility=View.GONE
detailLayout.visibility=View.VISIBLE
}
}
}
override fun onLoadCleared(placeholder: Drawable?) {
}
})
}
})
java中的简单优雅:
Bitmap bitmap;
Glide.with(mContext).load(PHOTOURL).apply(options).listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
bitmap = resource;
}
}).into(IMAGEVIEW);
与implementation 'com.github.bumptech.glide:glide:4.10.0'
。 请注意,它是异步的并且需要一些时间来加载位图。 我希望它有帮助。 此致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.