自动滚动视图寻呼机导致掉帧
Autoscrolling view pager causes frames to drop
我有一个无限和自动滚动的视图寻呼机,有 3 个页面(视图,不是片段)。使用 ObjectAnimator
我设置了一个虚拟动画,如下所示:
valueAnimator.setRepeatMode(ObjectAnimator.RESTART);
valueAnimator.setRepeatCount(ObjectAnimator.INFINITE);
valueAnimator.setDuration(1500);
并且在 onAnimationRepeat
中,我使用 setCurrentItem(nextItem, true)
移动到下一页。但是,如果我坐在这个屏幕上等待,那么 UI 性能会在 10 次左右的页面更改后越来越低(使用 TinyDancer 我观察到 FPS 从 60 下降到 20)。
但是,将行更改为 setCurrentItem(nextItem, false)
(将 smoothScroll
设置为 false),性能下降就消除了。
多次调用 setCurrentItem
是否会导致这种情况?我可以调整 smoothScroll
行为来解决这个问题吗?同样,我在这个寻呼机中最多加载了 5 个视图,并且我观察到当 FPS 下降时内存使用量保持不变。
这很可能与受 ViewPager
影响的视图有关。 ViewPager
所在的位置是否有父布局?检查您是否有父视图。虚拟动画可能导致父布局多次重新绘制自身和子元素。当您有...等待...嵌套视图时,这尤其麻烦!
我有一个无限和自动滚动的视图寻呼机,有 3 个页面(视图,不是片段)。使用 ObjectAnimator
我设置了一个虚拟动画,如下所示:
valueAnimator.setRepeatMode(ObjectAnimator.RESTART);
valueAnimator.setRepeatCount(ObjectAnimator.INFINITE);
valueAnimator.setDuration(1500);
并且在 onAnimationRepeat
中,我使用 setCurrentItem(nextItem, true)
移动到下一页。但是,如果我坐在这个屏幕上等待,那么 UI 性能会在 10 次左右的页面更改后越来越低(使用 TinyDancer 我观察到 FPS 从 60 下降到 20)。
但是,将行更改为 setCurrentItem(nextItem, false)
(将 smoothScroll
设置为 false),性能下降就消除了。
多次调用 setCurrentItem
是否会导致这种情况?我可以调整 smoothScroll
行为来解决这个问题吗?同样,我在这个寻呼机中最多加载了 5 个视图,并且我观察到当 FPS 下降时内存使用量保持不变。
这很可能与受 ViewPager
影响的视图有关。 ViewPager
所在的位置是否有父布局?检查您是否有父视图。虚拟动画可能导致父布局多次重新绘制自身和子元素。当您有...等待...嵌套视图时,这尤其麻烦!