如何在 Xamarin 表单的另一个视图中重用缓存的图像

Posted

技术标签:

【中文标题】如何在 Xamarin 表单的另一个视图中重用缓存的图像【英文标题】:How to re-use cached images in another view in Xamarin forms 【发布时间】:2021-11-27 21:08:02 【问题描述】:

我正在使用集合视图(缩略图)创建一个图片库应用程序。我正在使用 FFloading 从 URL 获取图像。当我单击图像时,我想使用共享事务库导航到另一个页面以全屏查看我的图像。但是,我注意到当我导航到全屏页面时,图像会重新下载。有没有办法可以实现这种无缝过渡?想想Instagram。谢谢

来自:页面

                                  Aspect="AspectFill"
                                  HeightRequest="150"
                                  RetryCount="5"
                                  CacheDuration="30"
                                  RetryDelay="450"
                                  DownsampleToViewSize="True"
                                  sharedTransitions:Transition.Name="PlaceImage"
                                  sharedTransitions:Transition.Group="Binding Id"
                                  Source="Binding PhotoPath,Converter=StaticResource Key=path"/>
                                <StackLayout.GestureRecognizers>
                                    <TapGestureRecognizer
                                        Command="Binding Source=x:Reference browse,Path=BindingContext.NavigateToDetailsCommand" CommandParameter="Binding ."/>
                                </StackLayout.GestureRecognizers>


To: <ffimageloading:CachedImage
               Aspect="AspectFill"
               DownsampleToViewSize="True"
               RetryCount="5"
               FadeAnimationEnabled="True"
               CacheDuration="30"
               Source="Binding PhotoPath,Converter=StaticResource Key=path"
               RetryDelay="450"
               sharedTransitions:Transition.Name="PlaceImage"/>```

【问题讨论】:

我先禁用DownsampleToViewSize 我无法在我这边重现这个问题。但是你为什么要使用 Converter 来代替 Source 呢?如果方便的话,可以发个基本的demo到github或者onedriver,方便我们测试一下吗? 如果我使用本地图像效果很好,但是我从 URI 获取的图像会有一点延迟。我使用转换器的原因是我不会一直在所有页面中输入完整的 URL but images I'm getting from a URI, there's a slight delay. 我从一个 URL 获得了一张图片,但我无法重现这个问题。是的,第一次加载图像时有延迟,但导航到另一个页面时没有延迟。 在下一页,您使用的是 URL 吗?是否可以分享你所拥有的。我真的很挣扎 【参考方案1】:

找到了解决办法,我需要在第二页设置一个hightrequest

【讨论】:

以上是关于如何在 Xamarin 表单的另一个视图中重用缓存的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin 表单中创建半屏相机视图

如何在 xamarin 表单的集合视图中的最后一项旁边添加图像/按钮?

Xamarin 表单从另一个视图获取数据

如何在 Xamarin 表单中的视图模型之间最好地传递信息 - Prism [关闭]

如何在 Xamarin 表单中使用 MVVM 仅为集合视图中的选定框架设置颜色?

如何在具有棱镜的Xamarin表单中为contentview创建单独的视图模型?