【问题标题】:Xamarin Forms Pop-in with custom renderers带有自定义渲染器的 Xamarin Forms Pop-in
【发布时间】:2021-07-31 13:54:09
【问题描述】:

我有一个适用于 android 的 Xamarin Forms 应用程序,它使用图像的自定义渲染器。我已将这些图像优化到使用InSampleSize 时位图在内存中只有大约 600kb 的程度,但我遇到了弹出问题。也就是说,当我使用我的MasterDetailPage 中的这些图像打开一个页面时,图像加载速度很快,但您仍然可以看到它们在页面显示后 100-200 毫秒弹出。

这是我在MasterDetailPage 中加载页面的方式

private void Button_Clicked(object sender, EventArgs e)
{
    var temp = new NavigationPage(new Pages.HomePage());
    Detail = temp;
    IsPresented = false;
}

如果可能的话,我想做的是在页面被导航到 UI 之前预渲染页面以掩盖弹出窗口,或者任何其他基本上可以完全删除它的解决方案。

【问题讨论】:

    标签: xamarin.android xamarin.forms


    【解决方案1】:

    人们通常在 Xamarin 表单中使用 FFImageLoading

    • Xamarin.iOS、Xamarin.Android、Xamarin.Forms 和 Windows(WinRT、UWP) 支持
    • 可配置的磁盘和内存缓存
    • 使用相同图像源(url、路径、资源)的多个图像视图将仅使用一个缓存在内存中的位图(内存使用量更少)
    • 类似下载/加载请求的重复数据删除。 (如果 100 个类似的请求同时到达,那么将执行一个真正的加载,而其他 99 个 将等待)
    • 错误和加载占位符支持
    • 图像可以自动下采样到指定大小(减少内存使用)
    • Fluent API,灵感来自 Picasso 命名 SVG 和 WebP 支持
    • 图像加载淡入动画支持
    • 可以重试图片下载(RetryCount、RetryDelay)
    • Android 位图优化。尽可能不使用透明通道,从而节省 50% 的内存。
    • 变换支持 BlurredTransformation CircleTransformation, RoundedTransformation, CornersTransformation, CropTransformation 颜色空间变换,灰度变换, SepiaTransformation, TintTransformation FlipTransformation, 旋转变换
    • 支持自定义转换(本机平台 ITransformation 实现)

    Here你可以找到一些文档

    【讨论】:

      【解决方案2】:

      首先,将该图像添加到以下路径中,这里我将“Ex”作为项目名称-

      Ex/Ex/Ex.Android/Resources/drawable/

      如果可绘制文件夹不存在,则创建它。 然后打开 Visual Studio,在解决方案资源管理器中找到可绘制文件夹。然后右键单击它并单击添加现有项目并添加您放置在可绘制文件夹中的所有图像。

      然后您可以在每个页面上使用图像,即 - <Image Source="ImageName.png" />

      您甚至可以在弹出窗口中使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-29
        • 2016-09-03
        • 2018-07-23
        • 1970-01-01
        • 2017-12-24
        • 1970-01-01
        • 2018-01-04
        • 1970-01-01
        相关资源
        最近更新 更多