學習Android界面設計的超級利器 HierarchyView.bat

fmms 12年前發布 | 25K 次閱讀 Android Android開發 移動開發

存在問題:
我看到別人的程序,想學習人家的UI布局是怎么做的,如何能窺探一二?
存在問題:
在學習ViewGroup和Layout時我們可能會有一個疑問,如果我在Xml布局文件中不放置Layout,直接放TextView等組件的時候,它是用什么方式布局的?
解決方法:
Android的SDK中自帶了一個查看UI布局層級結構的工具:HierarchyView.bat。在模擬器運行的情況下,使用該工具可以將當前的Activity中的UI組件們以對象樹的形式展現出來,每一個組件所包含的屬性也能窺探得到。在對象樹上的任意節點可以看到該節點及以下節點的顯示效果。使用HierarchyView能深入全面的理解xml布局文件,更可以通過它來學習別人優秀的布局技巧。

學習Android界面設計的超級利器 HierarchyView.bat
(看到那個不起眼的hierachyview.bat文件沒,哎,竟然它是學習Android界面設計的超級利器)

具體使用方法:待模擬器及想觀察的程序啟動后,雙擊Hirerachyview.bat,點擊Load View Hierarchy
學習Android界面設計的超級利器 HierarchyView.bat
現在我們先解決第一個問題:分析AndroidQQ的登錄界面組成。
學習Android界面設計的超級利器 HierarchyView.bat
從圖中可以看到QQ登錄界面中的核心部分是用相對布局擺放的,甚至可以看到有的TextView還用的是IDE自動起的ID:TextView01。
下面我們解決第二個問題:找到默認的布局方式是什么?
我們建一個新項目,Main.xml中只放一個TextView,

<?xml version="1.0" encoding="utf-8"?>
<TextView android:text="hi" android:id="@+id/TV"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android"></TextView>

看看他的布局層次是什么樣的:
學習Android界面設計的超級利器 HierarchyView.bat
我們可以看到頂級元素是個PhoneWindow,其下有一個線性布局LinearLayout,再下面有一個應用程序標題條,
學習Android界面設計的超級利器 HierarchyView.bat  

標題條是由一個幀布局FrameLayout和一個TextView組成。
我們自己寫的TextView也放在了一個Layout里,這個Layout就是ID叫做content的FrameLayout。
學習Android界面設計的超級利器 HierarchyView.bat
接下來我們再創建一個帶有LinearLayout的程序,看看他的層次結構來確定一下,那個ID是content的FrameLayout是固有的還是因為沒布局元素由系統自動加上去的。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <TextView android:text="haha" android:id="@+id/TextView01" 
        android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
</LinearLayout>
<LINEARLAYOUT <br="" android:id="@+id/LinearLayout01"></linearlayout>
下面是新程序的UI界面層次結構圖:
學習Android界面設計的超級利器 HierarchyView.bat
這一次我們同樣看到了那個Id是content的Framelayout:) 這說明它是窗口布局結構里固有的。
出自:《android學習指南》

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!