反应原生复活的手柄布局如何更新?

时间:2019-10-11 18:52:02

标签: react-native react-native-reanimated

当我们使用react-native-reanimatedtranslateXscaleopacity之类的属性设置动画时,react-native-reanimated在“本机” UI线程上运行动画。这些属性不会影响布局引擎,因此我们可以在主线程(JS)上完成布局,将值通过网桥传递给UI线程,然后对内容进行动画处理,而无需布局引擎的参与。

但是,当heightpaddingmargin之类的属性设置为动画时,这并不是很清楚。这些属性会影响布局,因此我们需要在属性更改时更新布局。但是布局是由Java的主线程完成的。如果由于heightpadding发生了变化,布局引擎必须在每一帧都处于活动状态,那么肯定会严重影响性能。

确实,在给padding设置动画时,我目前遇到大量的性能问题。探查器告诉我,性能问题来自网桥。 UI线程似乎在每一帧都回调Javascript,也许是由主线程更新布局,然后布局又通过桥传递给本机。

但是,react-native-reanimated提供了示例widthandheight/index.js,该示例清楚地为诸如widthheightfontSize之类的属性设置了动画,这些属性会影响布局。此示例以60fps的速度平稳运行。

react-native-reanimated如何处理对布局有影响的动画?在动画的开始和结束以及在它们之间的唯一UI线程之间是否存在布局过程(这听起来像是实验性的Transitions功能,但我不是在谈论Transitions)。为了获得良好的性能,需要遵循一些特殊的方法吗?

0 个答案:

没有答案