Android Fresco是Facebook开源的一款用于Android平台的图片加载库,它提供了高效的图片加载和显示功能。SimpleDraweeView是Fresco库中的一个自定义View,用于显示图片。
在使用Fresco的SimpleDraweeView的setImageURI方法加载图片时,如果传入的是一个http url,可能会出现不适用的情况。这是因为Fresco默认情况下不支持加载非安全的http图片,而是要求使用https协议来加载图片。
为了解决这个问题,可以通过以下几种方式来处理:
示例代码如下:
Uri uri = Uri.parse("http://example.com/image.jpg");
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setOldController(simpleDraweeView.getController())
.build();
simpleDraweeView.setController(controller);
示例代码如下:
Uri uri = Uri.parse("http://example.com/image.jpg");
Request request = new Request.Builder()
.url(uri.toString())
.build();
OkHttpClient client = new OkHttpClient();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 处理加载失败的情况
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 处理加载成功的情况
ResponseBody body = response.body();
if (body != null) {
InputStream inputStream = body.byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
simpleDraweeView.setImageBitmap(bitmap);
}
}
});
总结:Android Fresco的SimpleDraweeView.setImageURI方法默认情况下不适用于非安全的http图片链接。可以通过使用https协议的图片链接、使用Fresco的ImageRequest或使用OkHttp等网络库来加载图片来解决这个问题。
领取专属 10元无门槛券
手把手带您无忧上云