<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                前面介紹過使用HierarchyViewer和Android lint來優化我們的程序,這一篇算是總結性的,借助一個小例子來說用怎么優化應用布局。這個例子是android官網給出的,作者也當一把翻譯。 ? ? 多數開發者可能會這樣認為,使用基本的布局結構會產生高效的布局性能,其實這個想法是不完全正確的。我們每一個添加到應用的控件和布局,都需要初始化、布局、繪制,這些多是需要時間降低顯示速度的。另外,嵌套多個使用layout_weight屬性的LinearLayout實例會花費更大的代價,因為每一個子布局都要測量兩次。如果這種布局使用在ListView或者GridView中,渲染時會更耗時。 ? ? 下面,我們根據一個布局示例使用HierarchyViewer和Android lint來檢測優化布局結構。 ## 使用HierchyViewer ? ? HierchyViewer需要你選擇一個已連接的設備或者模擬器中的一個運行的程序,顯示出布局的樹結構。每個塊上的紅綠燈代表它的測量,布局,以及繪圖性能,幫助你找出潛在的問題。有讀者在讀完[《Android UI 優化——使用HierarchyViewer工具》](http://blog.csdn.net/xyz_lmn/article/details/14222975)后提出HierarchyViewer沒有顯示出紅綠黃燈和時間,這怎么解決。在tool目錄啟動HierarchyViewer確實沒有相應的設置去顯示,但是可以在eclipse中啟動HierarchyViewer去設置。Window->Open Perspective->others->hierarchyviewer。在Tree View點擊三個圓圈的按鈕,如圖一: ![](https://box.kancloud.cn/2016-01-11_569392c09ca04.jpg) ? ? ? ? ? ? ? ? ? ? ? ? 圖一 圖一圖二給出了顯示繪制時間和不顯示繪制時間的區別: ![](https://box.kancloud.cn/2016-01-11_569392c0b7031.jpg) ? ?圖二 ![](https://box.kancloud.cn/2016-01-11_569392c0d854c.jpg) 圖三 我們開始分析一個ListView的item布局,如圖四,這個布局的左邊顯示了一幅圖片,兩個文字item放在右邊。當布局被重復加載的時優化顯得尤為重要。 ![](https://box.kancloud.cn/2016-01-11_569392c0eee9f.jpg) ? ? ? ? ? ? ? ? ? ? ?圖四 圖四的布局文件在HierarcheyViewer中顯示的層次結構如圖五,選中LinearLayout會顯示各種性能參數,如圖六: ![](https://box.kancloud.cn/2016-01-11_569392c10b9e9.jpg)? ? ? ? ? ? ? ? ? ? ? ? ?![](https://box.kancloud.cn/2016-01-11_569392c12eeb5.jpg) ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖五 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖六 ? ? ? ? ? ? ?在圖五中顯示視圖有三層結構,并且有些顯示了紅燈黃燈,這就需要我們優化,圖六中也顯示了繪制時間。 ? ? 上述布局性能較低的原因主要是由一個內嵌的LinearLayout所引起,為了提高性能,我們使用RelativeLayout,將該布局淺而廣的扁平化結構代替為深而窄的樹形結構,這樣該布局變為一個2層的結構,修改后的布局結構如圖七: ![](https://box.kancloud.cn/2016-01-11_569392c141c12.jpg) 圖七 ? ? ?此時,繪制時間減少了,并且去掉了紅燈、黃燈顯示。 ## 使用lint [《Android代碼優化——使用Android lint工具》](http://blog.csdn.net/xyz_lmn/article/details/14222939)簡單說明了lint的使用,在布局文件內運行Lint工具,可以找出那些可能要優化的布局結構。Lint工具代替Layoutopt工具,并且有更大的功能。如下是Lint的一些示例: 1、Use compound drawables,在LineraLayout布局中包含一個ImageView和一個TextView,可以使用compound drawable代替,性能會更好。 2、Merge root frame,如果root布局是FrameLayout,可以使用代替,具體可參考[《Android抽象布局——include、merge 、ViewStub》](http://blog.csdn.net/xyz_lmn/article/details/14524567)。 3、Useless leaf,沒有子布局的layout可以去掉 4、Useless parent?,一個布局不是ScrollView或者不是一個根布局,也沒有背景,只有一個孩子節點,可以被刪掉。 5、Deep layouts,布局若有太多內嵌,則性能很差。考慮使用RelativeLayout 以及GridLayout等扁平化布局代替。默認布局最大深度是10. Android使用Lint請移步至[《Android代碼優化——使用Android lint工具》](http://blog.csdn.net/xyz_lmn/article/details/14222939)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看