我看到別人的程序,想學習人家的UI布局是怎么做的,如何能窺探一二?
在學習ViewGroup和Layout時我們可能會有一個疑問,如果我在Xml布局文件中不放置Layout,直接放TextView等組件的時候,它是用什么方式布局的? 解決方法:
Android的SDK中自帶了一個查看UI布局層級結構的工具:HierarchyView.bat。在模擬器運行的情況下,使用該工具可以將當前的Activity中的UI組件們以對象樹的形式展現(xiàn)出來,每一個組件所包含的屬性也能窺探得到。在對象樹上的任意節(jié)點可以看到該節(jié)點及以下節(jié)點的顯示效果。使用HierarchyView能深入全面的理解xml布局文件,更可以通過它來學習別人優(yōu)秀的布局技巧。
(看到那個不起眼的hierachyview.bat文件沒,哎,竟然它是學習Android界面設計的超級利器) 從圖中可以看到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>
看看他的布局層次是什么樣的:
我們可以看到頂級元素是個PhoneWindow,其下有一個線性布局LinearLayout,再下面有一個應用程序標題條,
標題條是由一個幀布局FrameLayout和一個TextView組成。
我們自己寫的TextView也放在了一個Layout里,這個Layout就是ID叫做content的FrameLayout。
接下來我們再創(chuàng)建一個帶有LinearLayout的程序,看看他的層次結構來確定一下,那個ID是content的FrameLayout是固有的還是因為沒布局元素由系統(tǒng)自動加上去的。 <?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> 下面是新程序的UI界面層次結構圖:
這一次我們同樣看到了那個Id是content的Framelayout:) 這說明它是窗口布局結構里固有的。 </font |