繁体   English   中英

加快复杂的Android View通货膨胀

[英]Speeding up complex Android View Inflation

我有一个相对较大的XML布局(38 kB,600行),层次结构如下:

<ScrollView>
 <LinearLayout>
  <TabHost>
   <LinearLayout> 
    <FrameLayout> //tab widget
     <LinearLayout> //tab content
      <LinearLayout> //section
       <TextView> //section name
       <LinearLayout orientation="horizontal"> //item 1 box
        <TextView> //item 1 title
        <Spinner> //item 1 picker
       </LinearLayout>
       <LinearLayout> //item 2 box
        <TextView> //item 2 title
        <Spinner> //item 2 picker
       </LinearLayout>
       ...  //18 other items
      </LinearLayout>
      ... //4 other sections with 15 items each
</>

这是一个数据输入表单,必须包含许多项,而我现在能做的最好的事情就是使用“ Loading ...”对话框包装setContentView并将数据加载到AsyncTask中的微调器中。

主题的大量使用是否也会减缓视图膨胀? View Inflater不需要查看已加载的theme.xml,但是如果我将主题内联到布局xml中,它也会大大增加XML的大小,从而减慢解析器的速度。

我可以做些什么来简化布局,使其加载速度至少快两倍吗? 我在想,我可能会尝试摆脱水平的LinearLayouts,并使用TableLayout构建“部分”。

首先,三个一般性评论:

  1. 确实要避免深层嵌套的布局。
  2. 考虑使用RelativeLayout替换嵌套的LinearLayouts
  3. 使用layout_opt工具可获得有关布局优化的一些建议。

现在,有关#1的更多信息……您是否考虑过编写自己的布局? 乍一看听起来很复杂,但有时可以极大地提高版图性能。 例如,如果RelativeLayout不到目的,则可以将Linear-Frame-Linear-Linear链组合到单个自定义布局中。

最后,您的标签指示符是否可以滚动是有原因的吗? 这似乎是一个导航/ UX问题。

我唯一想做的就是将您的视图分解为几个不同的部分,并在用户到达该部分时分别为每个视图充气。 不知道这是否有帮助,但好​​运。

也可能有助于查看traceview中的那部分代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM