【问题标题】:Scrollable list of buttons and images slowdown可滚动的按钮和图像列表减速
【发布时间】:2012-05-01 23:40:26
【问题描述】:

我需要实现一个图像和按钮列表。我有 6 张图像作为分隔符,总共有 14 个带有自定义背景的按钮。该列表具有全屏 (800×600) 背景,分隔图像为 800×30 像素,按钮也具有相似的大小(所有按钮具有相同的背景图像)。最重要的是,我需要一个自定义滚动指示器:顶部和底部有两个闪烁的箭头。箭头应根据滚动位置显示或隐藏。

我还有其他一些 GUI 元素,包括使用 View.GONE 隐藏的 GLSurfaceView,因为列表显示在这些元素的顶部。

问题在于,这种设置在 Galaxy Nexus 或 Desire HD 等功能相对强大的手机上运行速度太慢。

我尝试了两种不同的方法:

  1. 使用基于本教程的 ListView:http://android.amberfog.com/?p=296
  2. 将所有按钮和图像放入一个 LinearLayout 并将其用作 ScrollView 的子项。为了隐藏和显示闪烁的箭头,我通过覆盖 onScrollChanged (Synchronise ScrollView scroll positions - android) 来确定滚动位置

这两种实现都运行缓慢,具体取决于实际的手机。 ScrollView 实现通常更快,但它在 Desire 或 Galaxy Nexus 上明显滞后,而 ListView 实现在 Desire HD 上很慢。

实施此类列表的最佳方式是什么?您能否建议我一些指导方针,如何使实施快速且独立于设备?我相信列表中有大约 20 个图像和按钮对于这些手机来说应该不是问题。

【问题讨论】:

  • 您在 ListView 中使用什么类型的适配器?
  • 我从 BaseAdapter 继承了一个自定义适配器。
  • 编辑了原始问题以包含 GLSurfaceView

标签: android listview button imageview


【解决方案1】:

好的,问题似乎如下: 我在同一个活动中有一个 GLSurfaceView,列表出现在它上面。这对于 UI 线程来说太多了,尽管列表完全与 GLSurfaceView 重叠,并且在列表出现时渲染已暂停。

我将列表移至其他活动,现在它的速度可以接受。但是切换到列表比较慢,当我关闭列表时,我必须重新加载表面视图,但这没关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多