安卓開發2——碎片Fragment的使用
本實驗在上一次實驗基礎上進行:安卓開發1——活動與Intent的使用
實驗內容:
1、建立一個橫屏介面
方法:在layout目錄旁再建立一個同級別的layout-land目錄,將activity_list.xml佈局檔案複製到layout-land中即可
2、新增一個碎片DetailFragment,將新聞詳情製作成碎片
3、修改新聞詳情的佈局,將其中的控制元件用DetailFragment替換
4、修改新聞列表橫屏佈局,將列表右邊設計為一個新聞詳情
5、在AVD中可實現模擬橫、豎屏測試的功能,只要該活動設計有layout和layout-land兩種佈局,那麼橫屏和豎屏時則會載入不同的佈局檔案。
7、手機在橫屏或豎屏時會載入相應的佈局檔案,但兩種佈局檔案均使用同一個類檔案。修改ListActivity類程式碼,先判斷螢幕狀態,若橫屏,則點選列表時將新聞內容填充至右側碎片;若豎屏,則點選列表時開啟詳情活動顯示新聞內容。
判斷橫屏或豎屏方法:
Configuration mConfiguration = MainActivity.this.getResources().getConfiguration();
int ori = mConfiguration.orientation;
if (ori == mConfiguration.ORIENTATION_LANDSCAPE) {
Toast.makeText(MainActivity.this, "現在是橫屏", Toast.LENGTH_LONG).show();
} else if (ori == mConfiguration.ORIENTATION_PORTRAIT) {
Toast.makeText(MainActivity.this, "現在是豎屏", Toast.LENGTH_LONG).show();
}
實驗過程:
1、建立橫屏介面:建立layout-land目錄存放橫屏介面,將layout檔案中的activity_list.xml佈局檔案複製到layout-land中,如下。
2、建立一個碎片DetailFragment,同時會產生一個對應的佈局fragment_detail.xml。在DetailFragment中修改程式碼,用靜態變數方法獲取資料。
3、修改碎片佈局,可直接複製原ativity_detail.xml中的佈局,將其作為新聞詳情頁,之後會顯示於介面右方。
4、修改layout-land目錄下的activity_list.xml新聞列表佈局,在其右邊動態新增碎片,新增方法如下,此處將會顯示上一步的碎片佈局。
5、在TextView點選事件中新增關鍵性程式碼對手機橫豎屏狀態進行判斷,並分別進行不同的佈局展示,豎屏時開啟第二個活動頁並用Intent傳遞資料,橫屏時則在右方啟動碎片展示新聞詳情並用靜態變數方法傳遞資料,關鍵性程式碼和效果圖如下。
手機為豎屏狀態時:
手機切換為橫屏狀態時: