如何减少在Android WebView中启动CSS动画/转场的延迟



我试图在Android WebView中使用CSS3动画,但我在开始动画时得到一个非常烦人的延迟(大约500毫秒)。

动画运行平稳,没有延迟,但在开始时有延迟。由于没有延迟,我认为这不是性能问题。还是有可能?

它不是默认的300ms onclick延迟,我已经更改为ontouchstart,当我做动画/过渡以外的任何事情时,没有延迟。只有这两个。

这也不是animation-delay属性,我已经把它设置为0了

有什么可能的解释/解决方案吗?

PS:我试图运行的动画/过渡是与transform: translateX()属性。之前,我尝试用left: Xpx,但它在动画期间滞后。对于transform,没有延迟,但是有延迟。

我也遇到过同样的问题,但没能找到合理的解决方案。我尝试了不同的方法,以下是我的结论:

  • 使动画更长使其看起来更平滑,但不能减少开始时的延迟
  • 关闭硬件加速使动画更快(延迟也减少),但一些帧被丢弃,动画不再平滑
  • 将所有translate3d变为translateX/translateY/translateZ -无视觉差异
  • 将动画更改为通过JavaScript (transitionEnd事件)控制的多个过渡,使其更慢,途中有多个打嗝(每次当transitionEnd被触发时)。

我的猜测是CSS动画只是在Android上很慢,需要一些预计算来显示它们;因此一开始就耽搁了。我们可能需要等待Chrome成为Android的默认浏览器。

我不确定它是否有助于延迟,但也许你应该使用translate3d(x,0,0)而不是translateX,因为3D转换在硬件上运行。

我现在找不到参考资料,但我记得在Google Android HTML开发者网站上读过一篇关于它的文章。

我在股票浏览器上也有同样的问题。你可以把这个添加到你要制作动画的块中:

-webkit-backface-visibility: hidden;
-webkit-perspective: 1000;

这应该平滑动画,使它们更早开始,并消除动画前后的闪烁

相关内容

  • 没有找到相关文章

最新更新