J'utilise VS 2017 pour créer une application Xamarin multiplateforme (UWP, Android, iOS). J'essaie de montrer toutes les images d'un dossier sur l'appareil sous forme de vignettes (similaire à l'application de la galerie, exemple de capture d'écran ci-joint). Comment afficher toutes les images d'un dossier dans l'application Xamarin Cross-Platform?
J'ai regardé dans WrapLayout
code fourni sur le site Web Xamarin (Link), mais il est de charger toutes les images à partir d'Internet en utilisant JSON
protected override async void OnAppearing()
{
base.OnAppearing();
var images = await GetImageListAsync();
foreach (var photo in images.Photos)
{
var image = new Image
{
Source = ImageSource.FromUri(new Uri(photo + string.Format("?width={0}&height={0}&mode=max", Device.OnPlatform(240, 240, 120))))
};
wrapLayout.Children.Add(image);
}
}
async Task<ImageList> GetImageListAsync()
{
var requestUri = "https://docs.xamarin.com/demo/stock.json";
using (var client = new HttpClient())
{
var result = await client.GetStringAsync(requestUri);
return JsonConvert.DeserializeObject<ImageList>(result);
}
}
J'ai aussi examiné Xamarin Media Plugin
(Link), mais il montre une seule image à la fois. Exemple de code -
await CrossMedia.Current.Initialize();
var file = await CrossMedia.Current.PickPhotoAsync();
if (file == null)
return;
MainImage.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
file.Dispose();
return stream;
});
Mais je suis incapable de trouver un moyen de mettre en œuvre ces deux (ou toute autre méthode) de telle façon que je peux créer ma propre section de galerie dans mon application.