現代手機設備的一個非常重要的特性就是可以旋轉屏幕的方向。當然瞭,Android也不例外。Android支持兩種屏幕方向:portrait(豎屏)和landscape(橫屏)。默認情況下,當改變手持設備的屏幕方向時,當前的anctivity會自動地重繪它的內容。這是因為當屏幕方向發生變化的時候,onCreate()方法被觸發瞭。
說明:當改變設備的屏幕方向,事實上,你的當前的activity會被銷毀,然後重新創建。
然後,當views被重繪的時候,它們可能會按照之前的屏幕方向被繪制(這取決於被選擇的佈局layout)。
[html] view plaincopy<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TableRow>
<TextView
android:text="User Name:"
android:width ="120dp"
/>
<EditText
android:id="@+id/txtUserName"
android:width="200dp" />
</TableRow>
<TableRow>
<TextView
android:text="Password:"
/>
<EditText
android:id="@+id/txtPassword"
android:password="true"
/>
</TableRow>
<TableRow>
<TextView />
<CheckBox android:id="@+id/chkRememberPassword"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Remember Password"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonSignIn"
android:text="Log In" />
</TableRow>
</TableLayout>
豎屏模式:
橫屏模式:
請註意,在lanscape橫屏模式下,屏幕的右側多出來一些能被使用的空白控件。此外,當屏幕方向被設置成landscape的時候,任何在屏幕下方的view都會被隱藏。
通常,在屏幕方向改變時,可以使用兩種方法去處理那些變化。
增加錨點 —— 最簡單的辦法就是把你的視圖views“錨定”在屏幕的四周。當屏幕方法發生改變的時候,這個視圖views就能被很自然地“錨定”在屏幕的四周。
重新調整尺寸和位置 —— “錨定”和“集中”是簡單處理屏幕方向變化的方法,更高級的方法是根據當前的屏幕方向,重新調整每個View的尺寸和位置。
摘自 manoel的專欄