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); }