android - 显示大图像时 ListView 的性能较差

标签 android

我有一个 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,它还会指导您优化布局。

除了布局优化之外,还应该在 ListAdaptergetView 方法中完成最少的工作。

此外,您可以使用 android:hardwareAccelerated="true" 来利用 Android 3.0+ 中的硬件。

关于android - 显示大图像时 ListView 的性能较差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9175778/

相关文章:

android - 为什么 Unity IAP 服务无法在 Android 生产版本上运行?

android - 通过使用 Charles 4 拦截网络流量来逆向工程 native 应用程序?

java - 如何从地点选择器 Activity 中检索 map 快照?

java - 如何使用加速度计检测1Gs以上的振动?

android - 在处理 Android 模式时 svgs 的 loadShape 失败

android - Ionic Cordova 发布构建问题

java - 相机不保存图像

java - 继承 ParseObject 子类 (Android)

android - Firebase 根据日期按点排序

java - 我应该使用DocumentSnapshot,QuerySnapshot还是QueryDocumentSnapshot?