如何解决应对Android上的复杂布局
|| 我们有一个数据驱动的活动,该活动构造了一大组(通常最多100个)类似Button的组件,并将它们放置在Scrollable中。每个按钮都是从资源中膨胀出来的,并且基于RelativeLayout。该按钮有两个文本视图,两个图像视图(均来自资源),并且背景为9色块。 图像视图的大小,位置,文本和配置均由数据库查询驱动。 不幸的是,在HTC Desire上布局需要2-3秒,在HTC San Francisco或HTC Sapphire上需要3-5秒。 初始布局完成后,视图将表现出色。 我们尝试了许多没有影响的策略: 数据库查询时间-这并不是延迟的重要部分。 缓存按钮,以减少布局膨胀的数量。 在“实时”视图层次结构之外构造视图的子树,然后在完成时将其连接。 在另一个线程上执行相同的操作,但是将子树连接到UI线程上的活动。 我们有一个不确定的进度指示器(旋转器/加速器),它在查询在另一个线程上运行时旋转,但在布局进行时冻结。 所以,我的问题是: 我怎样才能使视图的布局看起来更敏感或 如何避免布局发生时锁栓堵塞 谢谢。 编辑 滚动条设置为水平和垂直滚动。所以我们有一个网格,屏幕是视口所在的网格。 这使得使用内置的ListView(乍看之下)不适合该任务。解决方法
进度指示器在布局期间不会重绘,因为它全部发生在UI线程中。
为了提高性能,您应该使用
ListView
,它可以滚动,并且可以使用自定义适配器自定义项(可以重用基于RelativeLayout
的\“ button \”),并且可以在滚动时回收项。请参阅在列表视图中回收视图是否值得?以及最重要的摘录,摘录自CommonsWare在Android上的著作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。