1

我在 ViewFlipper 中有两个视图,它们之间有一个快速/复杂的动画。第二个视图包含一个列表,因此在该视图在动画中途变得可见的那一刻,getView() 被调用了很多次并导致非常明显的卡顿(通常在整个动画的后半部分停止)

理想情况下,我想在开始动画之前预渲染(测量、布局、绘制)第二个视图,但我还没有找到一种简单的方法来做到这一点。

我还探索过使用绘图缓存、屏幕外画布等 - 但我也找不到实现此目的的简单方法。似乎是任何在两个视图之间制作动画的人都会遇到的问题。有什么帮助吗?

4

1 回答 1

0

您可以通过在开始动画之前指定图层类型并调用 buildLayer() 来实现,这会强制渲染视图。

newView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
newView.buildLayer();

您也可以使用 LAYER_TYPE_SOFTWARE。默认值为 LAYER_TYPE_NONE,它会阻止 buildLayer() 执行任何操作。

于 2016-05-19T19:30:37.460 回答