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