我正在使用JavaFXPorts在iOS上开发应用程序。我有一个Pane,它包含一个包含国家及其标志的ListView。我注意到当我在窗格上应用Drophadow效果时,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上,结果要糟糕得多。
答案 0 :(得分:1)
添加效果,css,转换,自定义控件以及其他通常在桌面上运行良好的复杂内容时,移植到移动设备时性能方面可能会有很大的损失。
效果
虽然效果使节点或窗格看起来很花哨,但它们对移动设备的性能影响最大。
尽量避免将它们应用于更改很多的节点,例如ListView,TableView或ComboBox控件上的单元格。
此外,如果您将它们应用于具有引用子项(ListView,...)的父项,则如果子项无效(滚动后或类似项),将始终呈现父项(和效果)。< / p>
如果您确实需要对此父级的效果,请尝试拆分父级和子级。
而不是:
parent (Pane with effect)
|-- ListView
你可以这样做:
parent (StackPane without effect)
|-- Pane (with effect)
|-- ListView
由于窗格不会发生太大变化,因此您可以使用缓存。通常,缓存策略通过渲染节点的图像(具有效果的窗格)来工作,而不是重新创建节点和该效果,所以这是一个快速的胜利:
parent (StackPane without effect)
|-- Pane (with effect) and with Cache
|-- ListView
相反,不要在更改很多的节点上使用缓存(如ListView)。
CSS
复杂的CSS需要很长的CPU时间。尽量简化它。即使你可以删除整个CSS进行快速测试。然后决定你可以使用或不使用的内容。
尝试用代码替换一些样式。
动画
动画也是如此:如果可能,请避免动画,过渡。
节点数和自定义控件
节点数量越多,性能越低,因此尽量将其保持在最低限度(在可能的情况下用图像替换复杂内容,画布)。
切换场景
移动屏幕较小,每个场景的内容比桌面上的内容更少。同样重要的是避免切换阶段或场景。而是使用不同的节点并在同一场景中替换它们。
Gluon Charm使用View
nodes,以及在不同视图之间切换的简便方法:MobileApplication.getInstance().switchView("other view name")
。
图片
最后,当使用从互联网下载或从文件加载的图像时,缓存策略是必须的。看看Gluon Charm Down提供的那些。