0

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). Sample image from Xamarin websiteComment 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.

Répondre

0

Vous devez créer une activité sur votre plate-forme spécifique. Cette activité sera lancée dans le cadre de votre projet PCL en utilisant, par exemple, les services de dépendance. Dans cette activité personnalisée vous devriez avoir un GridView qui remplit sa source du répertoire courant si le fichier correspond à vos restrictions, telles qu'une extension, une taille, etc.

Enfin, pour obtenir l'image sélectionnée, envoyez simplement l'image chemin ou tout ce dont vous avez besoin pour le projet PCL avec DependencyService.