例如,我可以使用Picasso加载位图并使用this建议的解决方案使用解决方案将其设置在任何视图上。
这是否支持Fresco?
更具体地说,我的问题是,是否可以在任何视图上使用Fresco设置加载的图像,而无需创建自定义视图?
答案 0 :(得分:0)
当然可能。使用下一个代码:
Uri imageUri = com.facebook.common.util.UriUtil.getUriForResourceId(imgResId);
// or if you use link:
// Uri imageUri = Uri.parse(webLinkToTheImage);
ImageRequestBuilder builder = ImageRequestBuilder
.newBuilderWithSource(imageUri)
.setRequestPriority(Priority.HIGH)
.setLowestPermittedRequestLevel(ImageRequest.RequestLevel.FULL_FETCH);
final DataSource<CloseableReference<CloseableImage>> dataSource =
Fresco.getImagePipeline().fetchDecodedImage(builder.build(), imageUri);
try {
dataSource.subscribe(new BaseBitmapDataSubscriber() {
@Override
public void onNewResultImpl(@Nullable Bitmap bitmap) {
if (null != bitmap) {
//TODO use bitmap
}
}
@Override
public void onFailureImpl(DataSource dataSource) {
if (dataSource != null) {
dataSource.close();
}
}
}, new MainThreadExecutor());
} finally {
if (dataSource != null) {
dataSource.close();
}
}
public class MainThreadExecutor implements Executor {
private final Handler handler = new Handler(Looper.getMainLooper());
@Override
public void execute(@NonNull Runnable r) {
handler.post(r);
}
}