我有一个 ListView,其中每个项目都是具有多个 View 的自定义布局(包括 ~445x250 的大图像、~40x40 的较小图像等)。滚动时,动画非常不稳定。
有人可以建议我如何提高性能吗?
我尝试的一种方法是消除所使用图像中的任何透明度。这确实稍微改善了它,尽管在新项目滚动到 View 之前仍然存在明显的滞后。
更新: 这是自定义布局的 View 层次结构(针对每个项目)-http://pastie.org/3333903
最佳答案
查看提供的布局,有一些事情可能会导致性能问题:
- 您的 View 层次结构的深度为 4。您应该使 View 层次结构尽可能浅。尽可能考虑使用
RelativeLayout
/TableLayout
而不是嵌套的LinearLayout
。 - 您有嵌套权重。尽量避免嵌套加权 View 。
- 您对某个行项目有很多次查看。请记住
ListView
的用途 - 如果您的行开始变得复杂,则可能表明您需要查看其他内容来显示此信息。 - 对于
ListView
行项目来说,GestureOverlayView
似乎有点重。有这个必要吗?考虑到 ListView 是可通过触摸滚动的,在行项目上使用自定义手势可能会有点困惑。
您还可以尝试使用 android:persistentDrawingCache="scrolling"
和 ViewHolder 模式来提高性能。
如果您下载最新版本的 ADT,它还会指导您优化布局。
除了布局优化之外,还应该在 ListAdapter
的 getView
方法中完成最少的工作。
此外,您可以使用 android:hardwareAccelerated="true"
来利用 Android 3.0+ 中的硬件。
关于android - 显示大图像时 ListView 的性能较差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175778/