我正在开发一个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显示图像的最佳方法是什么?
但是结果不是很好,因为可视化导致性能低下(滞后,响应低和调整大小错误)。
关于滞后和低响应,这需要为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进行尝试。