gpt4 book ai didi

c# - 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView

转载 作者:行者123 更新时间:2023-11-30 13:36:09 24 4
gpt4 key购买 nike

我有一个包含多个项目的 ListView,列表中的每个项目都应该有一个与之关联的图像。我已经创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url。

我正在尝试使用 Web 请求异步加载图像,并让它设置图像并在加载后在 View 中更新它,但 View 应立即使用默认图像呈现。

这是我用来尝试加载图像的方法

private async Task<Bitmap> GetImageBitmapFromUrl(string url, ImageView imageView)
{
Bitmap imageBitmap = null;

try
{
var uri = new Uri(url);
var response = httpClient.GetAsync(uri).Result;

if (response.IsSuccessStatusCode)
{
var imageBytes = await response.Content.ReadAsByteArrayAsync();
if (imageBytes != null && imageBytes.Length > 0)
{
imageBitmap = BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length);
imageView.SetImageBitmap(imageBitmap);
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
}

return imageBitmap;
}

我正在像这样初始化我的 HttpClient:

httpClient = new HttpClient();
httpClient.Timeout = new TimeSpan(0, 0, 10);
httpClient.MaxResponseContentBufferSize = 256000;

下面是我如何调用 GetImageFromUrl 方法

ImageView myImage = convertView.FindViewById<ImageView>(Resource.Id.AsyncImageView)
myImage.SetImageBitmap(null);
string url = GetItem(position);
GetImageBitmapFromUrl(url, myImage);

使用此代码,请求最终返回一个错误的请求,但是当我查看我正在使用的 url 并将其粘贴到浏览器窗口时,它会显示我期望的图像。

最佳答案

您无需关心下载图片。

Xamarin.Android 中有两个很好的库可以将图像加载到 ImageView 异步。

Picasso component ( source ) 用法:

Picasso.With(context)
.Load("http://i.imgur.com/DvpvklR.png")
.Into(imageView);

FFImageLoading ( source ) 用法:

ImageService.Instance.LoadUrl(urlToImage).Into(_imageView);

注意(来自文档):

Unlike Picasso you cannot use FFImageLoading with standard ImageViews. Instead simply load your images into ImageViewAsync instances. Updating your code is very easy since ImageViewAsync inherits from ImageView.

关于c# - 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37902950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com