1. 程式人生 > 實用技巧 >android螢幕旋轉切換控制元件佈局及資料的暫存

android螢幕旋轉切換控制元件佈局及資料的暫存

首先如何實現豎屏和橫屏下不同的控制元件佈局

1、在activity_main.xml檔案的佈局視窗找到create landscape variation,就是建立另一個橫屏的佈局檔案

2、在工程目錄看到多了一個activity_main.xml檔案,在這裡進行橫屏情況下的控制元件佈局

3、如下圖所示為兩種佈局,按鍵分別是三行兩列,兩行三列分佈

4、監聽button1,按下按鈕1後將上方的Textview顯示由welcome變為button1,並重寫ondestroy函式,呼叫destroy函式時列印相關資訊

測試 螢幕旋轉時 Textview顯示的變化以及destroyed在何時會被呼叫

從左至右依此是開始介面->按下button1後顯示介面->旋轉後介面    

測試發現每次旋轉螢幕,都會呼叫一次destroy函式,說明旋轉螢幕會導致程式的銷燬,再重新開始一個新的程式,這也就意味著旋轉後介面上的顯示資訊無法得到儲存,所以圖二到圖三可以看到Textview的顯示內容由button1變為了welcome就是這個原因。

5、如何保證在旋轉屏幕後顯示介面的資訊依舊不改變?

 if(savedInstanceState!=null)        //需要先判斷是否為空,不為空代表有歷史資料儲存需要進行資料復原,否則會引起空指標異常
        { 
            String s
=savedInstanceState.getString("key"); //savedInstanceState存放的Bundle資訊實際就是從outState而來 textView.setText(s); } button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textView.setText(R.string.button1); } }); } @Override
//不過這種方式儲存資料只是臨時儲存,無法永久儲存 protected void onSaveInstanceState(@NonNull Bundle outState) { //該函式用於提取出歷史資料,儲存到outState中 super.onSaveInstanceState(outState); outState.putString("key",textView.getText().toString());//將textview中的內容存放在鍵值為KEY的字串中,最終會存為一個Bundle }

呼叫onSaveInstanceState函式,可以暫時儲存要保持的歷史資料,在程式執行後判斷savedInstanceState是否為空,對資料進行復原顯示,不過這種方式只是暫時的儲存了歷史資料,不過應用到螢幕旋轉中也能解決資料丟失的問題。

這樣旋轉屏幕後資料依舊不會改變。