Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何提高ViewFlipper/ViewAnimator的性能_Android_Performance_Android Layout_Android Widget - Fatal编程技术网

Android 如何提高ViewFlipper/ViewAnimator的性能

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

我正在使用一个ViewAnimatorViewFlipper的父类)来制作某种交互式书籍。 层次结构大致如下所示:

<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
,您可以使用我在这里所做的:…非常正确。谢谢你的大开眼界