我们有一个数据驱动的活动,它构造一个大型集合(通常最多100个)类Button组件并将它们放在Scrollable中。每个按钮都是从资源中膨胀的,并且基于RelativeLayout。该按钮有两个文本视图,两个图像视图 - 均来自资源 - 并具有9个补丁的背景。
图像视图的大小,位置,文本和配置都是从数据库查询驱动的。
不幸的是,在HTC Desire上布局需要2-3秒,在HTC旧金山或HTC蓝宝石上需要3-5秒。
初始布局完成后,视图效果非常好。
我们已经尝试了许多没有区别的策略:
我们有一个无限期的进度指示器(spinner / throbber),当查询在另一个线程上运行时会旋转,但在布局开始时会冻结。
所以,我的问题是:
感谢。
修改
滚动条设置为水平和垂直滚动。所以我们有一个网格,屏幕是一个视口。
这使得使用内置的ListView(乍一看)不适合该任务。
答案 0 :(得分:0)
进度指示器在布局期间不会重绘,因为它都发生在UI线程中。
为了提高性能,您应该使用ListView
,它是可滚动的,并且可以自定义项目(您可以重复使用基于RelativeLayout
的“按钮”)和自定义适配器,并且它允许回收滚动时的项目。请参阅Recycling views in a listview, worth it?,最重要的是excerpt from CommonsWare's book on Android。