如何从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);
问题是整个程序必须等待此任务完成,我想异步加载图像,但我不知道如何异步创建图像源
异步获取数据,并在完成后将其分配给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")),
};
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));