如何从Xamarin表单中的URI异步加载图像

本文关键字:URI 异步 加载 图像 Xamarin 表单 | 更新日期: 2023-09-27 18:05:19

这是我当前加载图像的代码:

System.Uri uri;
System.Uri.TryCreate (imageURI, UriKind.Absolute, out uri);
_companyImage.Source = ImageSource.FromUri (uri);

问题是整个程序必须等待此任务完成,我想异步加载图像,但我不知道如何异步创建图像源

如何从Xamarin表单中的URI异步加载图像

异步获取数据,并在完成后将其分配给Source。

System.Uri uri;
System.Uri.TryCreate(imageURI, UriKind.Absolute, out uri);
Task<ImageSource> result = Task<ImageSource>.Factory.StartNew(() => ImageSource.FromUri(uri));
_companyImage.Source = await result;

您可以简单地将Image.Source属性设置为URI并让Xamarin。表单为您完成工作(参见"使用图像")。Xamarin的。表单文档).

var someImage = new Image() {
    Aspect = Aspect.AspectFit,
    Source = ImageSource.FromUri(new Uri("http://xamarin.com/content/images/pages/branding/assets/xamagon.png")),
};

将url设置为Source属性或从viewmodel绑定

https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/

<Image Source="yoururl"  Aspect="AspectFill" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>

在特殊情况下,你试图在Android上使用ContentUri(例如content://com.android.contacts/contacts/18/photo),这是必需的咒语:

var uri = Android.Net.Uri.Parse(str);
_companyImage.Source = ImageSource.FromStream(() => Android.App.Application.Context.ContentResolver.OpenInputStream(uri));