【问题标题】:Improving ListView performace when laid on top of SurfaceView当放置在 SurfaceView 之上时提高 ListView 的性能
【发布时间】:2015-07-29 13:20:27
【问题描述】:

我的布局类似于这样:

正如草图所描述的,我使用SurfaceView 来接收和绘制相机预览数据。所述视图是由 ListView 覆盖的,其中包含多个子级。

我现在面临的主要问题是我从ListView 得到的滚动性能很差。我完全不知道为什么会发生这种情况,尤其是当相机预览看起来一点也不卡顿时。

也就是说,我通过分离相机预览做了一些实验(是的,它是Fragment),ListView 的性能得到了显着提高。所以可能是相机预览导致了这一切。但作为我的 Activity 如此重要的一部分,完全删除它不是一种选择。

那么,有什么办法可以让我的ListView 滚动更好?我也愿意接受您可能拥有的任何替代解决方案。

提前致谢!

【问题讨论】:

  • 只是想说,我也有类似的问题。但是我在不同的设备上遇到了不同的行为。功能更强大的设备 Galaxy Note (SM-P600) 的表现非常糟糕。较旧的 Galaxy Tab 表现相当不错。但存在巨大的分辨率差异。

标签: android performance android-listview


【解决方案1】:

我找到了解决此问题的可能方法。通常surfaceView由gpu处理。至少它是硬件加速的。在较新的设备上,ListView 也是硬件加速的。如果surfaceView的处理量很大,会消耗大量的处理能力。通过使用listView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 开启硬件加速,您可以让cpu 处理您的列表视图。这样一来,您无法获得列表视图的最佳性能,但您会获得不错的结果,这不依赖于表面视图的负载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2019-11-27
    • 2015-05-06
    • 2015-12-01
    相关资源
    最近更新 更多