以Xamarin形式显示图像的最佳方法

问题描述 投票:0回答:1

我正在开发一个Android应用程序,该程序可从数据库中检索PC的信息,将PC的相对图像上传到服务器,并获取图像的PC URL以便显示。一切都像灵符一样,对于这三部分,我都使用WCF服务,该服务部署在远程IIS服务器上。

图像存储在服务器的虚拟目录中,因此您可以复制URL并将其粘贴到浏览器中,并且图像不会出现问题。

当我使用图像的动态视图时,我实现了以下创建图像的方法:

private void DisplayAttechedIMages(List<string> list_images_url)
{
    for (int i = 0; i < list_images_url.Count; i++)
    {
        Image pic = new Image
        {
            HeightRequest = 250,
            WidthRequest = 150,
            Source = ImageSource.FromUri(new Uri(list_images_url[i])),
        };
    }
}

这只是我创建它们的部分,现在我需要将它们添加到容器中,我试图在<Grid>内使用<ScrollView>,但是效果不佳,因为可视化效果差(滞后,低响应和错误的大小调整)。

我也尝试在<ViewCell>中使用<TableView>,但结果几乎相同。

此结果可能取决于设备?

那么使用URL显示图像的最佳方法是什么?

c# xaml xamarin xamarin.forms xamarin.android
1个回答
0
投票

但是结果不是很好,因为可视化导致性能低下(滞后,响应低和调整大小错误)。

关于滞后和低响应,这需要为Image缓存。调整大小不正确,Image中有一个属性:

Aspect属性确定如何缩放图像以适合显示区域:

  • Fill-拉伸图像以完全准确地填充显示区域。这可能会导致图像失真。
  • [AspectFill-剪裁图像,使其在保留宽高比的同时填充显示区域(即无失真)。
  • [AspectFit-对图像加上字母框(如果需要),以便使整个图像适合显示区域,并在顶部/底部或侧面添加空白,具体取决于图像是宽还是高。]]
  • 您可以选择一个来满足自己的最大需求。

这里,我将建议您FFImageLoading

Nuget Packaget尝试一下,它使用了缓存优化了URL图像。
var cachedImage = new CachedImage() {
    HorizontalOptions = LayoutOptions.Center,
    VerticalOptions = LayoutOptions.Center,
    WidthRequest = 300,
    HeightRequest = 300,
    CacheDuration = TimeSpan.FromDays(30),
    DownsampleToViewSize = true,
    RetryCount = 0,
    RetryDelay = 250,
    BitmapOptimizations = false,
    LoadingPlaceholder = "loading.png",
    ErrorPlaceholder = "error.png",
    Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg"
};

您可以参考其official sample进行尝试。

© www.soinside.com 2019 - 2024. All rights reserved.