首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android上处理复杂的布局

在Android上处理复杂的布局
EN

Stack Overflow用户
提问于 2011-05-25 21:58:24
回答 1查看 288关注 0票数 2

我们有一个数据驱动的活动,它构造一个大型的Button类组件集(通常为100),并将它们放在一个可滚动的位置。每个按钮都是从资源中充气的,并且是基于RelativeLayout的。该按钮有两个文本视图,两个图像视图--都来自资源--并且有一个9补丁的背景。

图像视图的大小、位置、文本和配置都是由数据库查询驱动的。

不幸的是,这需要2-3秒来布局宏达电的愿望,3-5秒的宏达电旧金山或宏达蓝宝石。

一旦完成了初始布局,视图就会执行得很漂亮。

我们尝试了一些没有任何影响的战略:

  • 数据库查询的时间--这不是延迟的重要部分。
  • 缓存按钮,以减少布局膨胀的数量。
  • 在“活动”视图层次结构之外构造视图的子树,然后在完成时将其连接起来。
  • 在另一个线程上执行相同的操作,但是将子树连接到UI线程上的活动。

我们有一个不确定的进度指示符(spinner/throbber),它在查询运行在另一个线程上时旋转,但当布局开始运行时会冻结。

因此,我的问题是:

  • 如何使视图的布局看起来更有响应性,
  • 如何在布局发生时避免thobber锁定,

谢谢。

编辑

滚筒被设置为水平和垂直滚动。因此,我们有一个网格,屏幕上是一个视图。

这使得使用内置的ListView (乍一看)不适合该任务。

EN

回答 1

Stack Overflow用户

发布于 2011-05-25 22:39:22

进度指示符不会在布局期间重新绘制,因为所有这些都发生在UI线程中。

为了提高性能,您应该使用ListView,它是可滚动的,可以使用自定义适配器自定义项目(您可以重用基于RelativeLayout的“按钮”),并且允许在滚动时回收项目。请参阅列表视图中的回收视图,值得吗?,以及最重要的是摘录自CommonsWare关于Android的书

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6131481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档