Android 如何提高ViewFlipper/ViewAnimator的性能
我正在使用一个ViewAnimator(ViewFlipper的父类)来制作某种交互式书籍。 层次结构大致如下所示:Android 如何提高ViewFlipper/ViewAnimator的性能,android,performance,android-layout,android-widget,Android,Performance,Android Layout,Android Widget,我正在使用一个ViewAnimator(ViewFlipper的父类)来制作某种交互式书籍。 层次结构大致如下所示: <ViewAnimator> <include layout="@layout/p0" /> <include layout="@layout/p1" /> <include layout="@layout/p2" /> ... </ViewAnimator> ... 因此,本书的页面位于ViewA
<ViewAnimator>
<include layout="@layout/p0" />
<include layout="@layout/p1" />
<include layout="@layout/p2" />
...
</ViewAnimator>
...
因此,本书的页面位于ViewAnimator中。每个页面都有一个框架布局,包含多层动画图像视图、文本视图、按钮。。。结果是太多了。通过viewAnimator.showNext()显示书籍的新页面可能需要几秒钟。所有这些时间都花费在ImageView.onDraw()-Traceview中
-是否有任何布局可以替代ViewAnimator(ViewPager、ViewGroup的其他实现…)改进任何内容
-是否有任何方法可以预加载视图下一步将显示的ViewFlipper/ViewAnimator/other?(这样,书的下一页就永远准备好了,并在记忆中留下了美好的回忆)
-我应该使用Canvas还是GLSurfaceView?(无法使用动画框架)
我被卡住了。。。你能帮忙吗?我不能回答你所有的问题,但我会告诉你我所知道的,因为这比没有其他答案要好P 默认情况下,ViewPagers在任意一侧加载视图。这会加快切换速度,但可能会减慢当前打开的视图。可以使用其中一种方法设置viewpager上的预加载视图数 如果您不想使用ViewPager,您可以尝试自己实例化要预加载的视图,并简单地将它们设置为不可见 除地图覆盖外,我对画布或GL没有经验,但我希望如果正确实施,它们会更快/响应更快/效率更高,因为您不会有任何不必要的功能。但可能会很混乱,这取决于内容的来源 建议:
试试ViewPager,它是为类似您的实现而设计的。如果您对此不满意,请卷起袖子检查画布内容。要提高ViewFlipper的性能,您可以设置 android:measureAllChildren=“false” 在xml中。对于FrameLayout,这通常设置为false,但由于某些原因,ViewAnimator默认情况下会启用它
将其设置为false解决了我一个非常奇怪的滞后问题。我试图使用ViewFlipper模拟Windows Phone中全景控件的行为,但也存在同样的问题(视图翻转缓慢)。如何改进ViewFlipper视图切换?我想补充一点,如果您想跳到特定视图,而不是
showNext
,您可以使用我在这里所做的:…非常正确。谢谢你的大开眼界