当前位置:操作系统 > 安卓/Android >>

Android中View绘制优化之一---- 优化布局层次

                            译序

 

 

 

         最近一直在做锁屏界面,之前也写过关于锁屏界面的一些简单原理,未曾想自己真正去深入理解锁屏时,才

  发觉锁屏框架真是又大又复杂,主要体现在如下两个方面:

 

            1、界面的组成以及更新机制;

            2、对电源管理的控制,在锁屏界面会禁用系统的电源管理,自己接管屏幕亮度的控制。

 

       当然还有更多的逻辑细节处理,只能耐着性子去研究了。。

 

       通过对本次锁屏界面的处理,才发现自己对View绘制还是不熟透,很多东西也没有去潜心研究,导致自己在

  真正做项目时候才手忙脚乱的。因此,借着这次机会,也把Android 4.0 developer这些先进的知识(山人一直

 沉浸在Android 2.2中)给过了一下,真是妙处多多。

 

 

    开头: 为了避免歧义,先将Android “Layout”一次的意思进行说明,主要有如下三个方面:

                   1、统称,即如何摆放UI,UI呈现效果等;

                   2、布局文件  ,即/res/layout/xxx.xml  ;

                   3、布局过程  ,Android绘制过程中的 layout过程;

                   4、一些布局控件,例如LinearLayout、FrameLayout等 ;

 

 

 

  正文:

 


                                改善布局效率(Layout Performace)
 

  

 


         布局是Android应用程序重要的一部分,它与用户体验有着直接联系。如果一个布局是糟糕的,它将产生一个

  消耗内存与低效UI应用程序。 Android SDK 及它包含的工具都能帮助你定位在布局过程中隐藏的问题,通过对

  这些课程的学习,你能够以很小的内存代价去实现流畅的平滑界面。

 

  课程如下:

 

  1 、优化布局层次

            同样地,一个复杂的网页会延长加载时间,你的布局层次如果太复杂也能引发一些效率问题。本课程

      告知你如何利用 SDK的工具去观察你的布局以及发现布局过程的瓶颈问题。

 

  2、使用<include />标签复用布局文件

            如果应用程序的UI在多处重复某些布局结构,本课程向你展示如何创建高效、可重用的布局结构,然后

      以合适的 UI布局文件包含它们。

              

  3、按需加载View视图

           除了简单地在另外的布局文件中包括一个布局组件,你可能想在需要的时候才将视图显现出来,有的时候

     是在Activity运行之后。本课程告诉你如何改进布局初始化行为---- 按需加载布局文件的某个视图。

                 

 4、如何使ListView流畅滑动

          如果你构建了一个ListView实例呈现那些包含复杂或者大容量数据的列表项,这可能会影响ListView的流畅

     滑动。本课程提供了一些如何让滑动过程更加流畅的建议。

                 

               

   译一 :

 


                                     优化布局层次
 

 


  

         一个通常的错误观念就是使用基本的布局结构(例如:LinearLayout、FrameLayout等)能够在大多数情况下

   产生高效率 的布局。 显然,你的应用程序里添加的每一个控件和每一个布局都需要初始化、布局(layout)、

   绘制 (drawing)。举例来说:嵌入一个LinearLayout会产生一个太深的布局层次。更严重的是,嵌入几个使

   用 layout_weight属性的LinearLayout 将会导致大量的开销,因为每个子视图都需要被测量两次。这是反复解析

   布局文件时重要的一点,例如在ListView或者GridView中使用时。

 


 观察你的布局
 

     Android SDK 工具箱包括一个称作“ Hierarchy Viewer”的工具,它允许你去在你的应用程序运行时分析

  布局。通过使用这个工具,能帮助你发现你的布局效率上的瓶颈问题。

 

     “ Hierarchy Viewer”工具允许你在已连接的设备或模拟器中选择正在运行的进程,然后呈现出布局层次树

   (layout tree)。每个正方块下的交通灯(见下图) --- 红绿蓝表现出了在测量(measure)、布局(layout)、以及绘制

   (draw)过程中的效率值,这能帮助你定位潜在的问题。

 

        假设ListView 中的一项Item 存在如下(见图 1)布局 :

 \


                                

                                        图1:ListView某项Item的布局效果图

 


     “Hierarchy Viewer”工具可以在 <sdk>/tools路径下找到。当打开它时,“ Hierarchy Viewer”工具显示了

   所有可用的设备以及运行在这些设备上的进程。点击”Load View Hierarchy”来显示某个你选择的组件的UI布局

  层次。举例来说,图2展现了图1的布局层次树。

 

\
                            

                                           图2:使用LinearLayout的布局树

 


      在图2中,你可以直观看到这个三层的布局结构是存在一些问题的。点击项体现出了在每个测量(measure)、

    布局(layout)、以及绘制(draw)过程中的时间消耗(见图3)。很明显,该项(LinearLayout)花费了最长的时间去

    测量、布局、绘制,你应该花点精力去优化它们。

 \


                &

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,