如何在Xamarin Cross-Platform应用程序中显示文件夹中的所有图像?

如何在Xamarin Cross-Platform应用程序中显示文件夹中的所有图像?

问题描述:

我正在使用VS 2017创建一个跨平台(UWP,Android,iOS)的Xamarin应用程序。我试图将设备上的文件夹中的所有图像显示为缩略图(类似于图库应用程序,附带示例屏幕截图)。 Sample image from Xamarin website如何在Xamarin Cross-Platform应用程序中显示文件夹中的所有图像?

我特地到设在Xamarin网站(LinkWrapLayout示例代码,但它使用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); 
      } 
     } 

我也看着Xamarin Media PluginLink)加载所有图片来自网络,但它表明一次只有一个图像。示例代码 -

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; 
    }); 

但我无法找到一个方法来实现这两个(或任何其它方法)中,我可以在我的应用程序创建自己的画廊节这样的方式。

您需要在您的特定平台中创建一个活动。此活动将作为一个意图通过您的PCL项目启动,例如使用Dependency Services。 在这个自定义的活动,你应该有填充从当前目录的源一个GridView如果该文件符合你的限制,例如特定扩展名,大小等

最后,让所选择的图像您只需发送图像路径或任何你需要使用DependencyService的PCL项目。