Android Studio 屏幕方向以及UI界面狀態的保存


package com.example.orientation;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
/*
    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
    本實例主要學習,屏幕翻轉時,界面如何自適應,創建橫屏布局
    1.禁止切換橫屏:在 AndroidManifest.xml-->application->activity->中設置如下代碼(android:screenOrientation="portrait")
      <activity android:name=".MainActivity" android:screenOrientation="portrait" >
    2. 創建 Landscape 布局,橫屏時,會自動加載 Landscape 的布局界面(清單文件中,注意去掉 android:screenOrientation="portrait" )
    3. 翻轉屏幕時,保存窗口控件的狀態值;

    = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
 */
    Button button;
    TextView textView;

    String TAG = "myTag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button  = findViewById(R.id.button );
        textView = findViewById(R.id.textView);

        //如果State中的值不為空,如果有相應的這個組件的值,則讀取出來賦值上去
        if(savedInstanceState !=null)
        {
            String s = savedInstanceState.getString("key");
            textView.setText(s);
        }

        button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { textView.setText(button.getText()); } });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG,"onDestroy:");
    }

    @Override
    //將 textView 中的值,先保存到 outState 中(鍵值對)
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("key",textView.getText().toString());
    }
}
  項目:Orientation

  

【創建橫屏】

 

 

 

1.禁止切換橫屏:在 AndroidManifest.xml-->application->activity->中設置如下代碼(android:screenOrientation="portrait")
      <activity android:name=".MainActivity" android:screenOrientation="portrait" >
2. 創建 Landscape 布局,橫屏時,會自動加載 Landscape 的布局界面(清單文件中,注意去掉 android:screenOrientation="portrait" )
3. 翻轉屏幕時,保存窗口控件的狀態值;

注意:這里屏幕翻轉后,會導致界面重新加載,界面上原來計算的數值就會重新變成初始狀態。
所以為了解決這個問題,可以用 onSaveInstanceState 這個事件來保存控件狀態
@Override
    //將 textView 中的值,先保存到 outState 中(鍵值對)
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("key",textView.getText().toString());
    }

然后在界面 onCreate()的時候,如果這個值如果已經存在了,就自動加載出來
//如果State中的值不為空,如果有相應的這個組件的值,則讀取出來賦值上去
 if(savedInstanceState !=null)
 {
   String s = savedInstanceState.getString("key");
   textView.setText(s);
 }

  

 

 

 
        
 
        





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM