gpt4 book ai didi

css - iPhone 上的 JavaFX - 应用阴影时 Laggy ListView 滚动

转载 作者:行者123 更新时间:2023-11-28 12:07:26 25 4
gpt4 key购买 nike

我正在使用 JavaFXPorts 在 iOS 上开发一个应用程序。我有一个 Pane ,其中包含一个包含国家及其国旗的 ListView。当我在 Pane 上应用投影效果时,我注意到 ListView 滚动很慢。正如您从下面的视频中看到的那样,没有效果滚动非常流畅,而通过 CSS 应用效果时,滚动开始变得迟缓。我想保留阴影效果,因为它使应用程序更漂亮。所以非常感谢任何建议。

我使用的 CSS 代码是:

-fx-effect: dropshadow( three-pass-box, rgba(0,0,0,0.6) , 5, 0.0 , 0 , 1);

Video: Scrolling without shadow effect

Video: Scrolling with shadw effect (Laggy)

请注意,这是在 iPhone 6 上运行的。在 iPhone 5 上结果要差得多。

最佳答案

当添加效果、CSS、过渡、自定义控件和其他通常在桌面上运行良好的复杂内容时,在移植到移动设备时可能会在性能方面造成很大损失。

效果

虽然效果使节点或 Pane 看起来很花哨,但它们对移动设备性能的负面影响最大。

尽量避免将它们应用于变化很大的节点,例如 ListView、TableView 或 ComboBox 控件上的单元格。

此外,如果您将它们应用于具有引用子项(ListView,...)的父项,如果子项无效(在滚动或类似之后),则父项(和效果)将一直呈现。

如果你真的需要这个父级的效果,尝试拆分父级和子级。

代替:

parent (Pane with effect)
|-- ListView

你可以这样做:

parent (StackPane without effect)
|-- Pane (with effect)
|-- ListView

由于 Pane 不会有太大变化,您可以在其上使用缓存。通常,缓存策略通过渲染节点的图像(具有效果的 Pane )来工作,而不是重新重新创建节点和那个效果,所以这是一个快速的胜利:

parent (StackPane without effect)
|-- Pane (with effect) and with Cache
|-- ListView

相反,不要在变化很大的节点上使用缓存(比如ListView)。

CSS

复杂的 CSS 需要很长的 CPU 时间。尝试简化它。您甚至可以删除整个 CSS 进行快速测试。然后决定您可以使用或不可以使用的内容。

也尝试用代码替换一些样式。

动画

动画也是如此:尽可能避免动画、过渡。

节点数和自定义控件

节点数量越多,性能越低,所以尽量保持在最低限度(尽可能用图像、 Canvas 替换复杂的内容)。

切换场景

移动设备的屏幕更小,每个场景的内容都比桌面设备少。避免切换舞台或场景也很重要。而是使用不同的节点并在同一场景中替换它们。

Gluon Charm 使用View nodes ,以及在不同 View 之间切换的简单方法:MobileApplication.getInstance().switchView("other view name")

图片

最后,当使用从互联网下载或从文件加载的图像时,缓存策略是必须的。看看 Gluon 提供的那些 Charm Down .

关于css - iPhone 上的 JavaFX - 应用阴影时 Laggy ListView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com