显示大图像时ListView的性能不佳

时间:2012-02-07 11:52:49

标签: android

我有一个ListView,每个项目都是具有多个视图的自定义布局(包括~445x250的大图像,~40x40的较小图像等)。在滚动时,动画非常不连贯。

有人可以推荐我如何提高效果吗?

我尝试过的一种方法是消除所用图像的透明度。虽然在新项目滚动到视图之前仍然存在明显的延迟,但这确实略有改善。

更新: 这是自定义布局的View heirarchy(对于每个项目) - http://pastie.org/3333903

2 个答案:

答案 0 :(得分:3)

查看提供的布局,可能会出现一些可能导致性能问题的事情:

  • 您的视图层次结构的深度为4.您应该使视图层次结构尽可能浅。考虑尽可能使用RelativeLayout / TableLayout而不是嵌套LinearLayout
  • 您有嵌套权重。尽量避免使用嵌套加权视图。
  • 您有一个很多的行项目视图。请记住ListView的目的 - 如果您的行开始变得复杂,则可能需要查看其他内容以显示此信息。
  • 对于GestureOverlayView行项,ListView似乎有点沉重。这有必要吗?考虑到ListView可以通过触摸滚动,在行项上具有自定义手势可能有点令人困惑。

您还可以尝试使用android:persistentDrawingCache="scrolling"和ViewHolder模式来提高性能。

如果您下载最新版本的ADT,它还会指导您优化布局。

除了布局优化之外,应该在getView的{​​{1}}方法中完成最少的工作。

此外,您可以使用ListAdapter来利用Android 3.0 +中的硬件。

答案 1 :(得分:0)

您可以使用“列表”视图来使用动态表格布局。它将改善性能。动态表格布局将调整大图像和较小的图像。这对你有帮助。