ScreenOrientation
android屏幕旋转锁定
1.AndroidManifest.xml设置
如果单单想设置横屏或者竖屏,那么只需要添加横竖屏代码( 锁定屏幕旋转 ):
android:screenOrientation=”landscape”
横屏设置;
android:screenOrientation=”portrait”
竖屏设置;

这种方法的优点:即使屏幕旋转,Activity也不会重新onCreate。
缺点:屏幕只有一个方向。
2.代码动态设置
参考:https://www.cnblogs.com/wikiki/p/5254332.html
屏幕旋转后的数据保持与恢复
android屏幕中的六个按钮再旋转屏幕后对应新的布局,同时存储与恢复上一个方向时候的数据
按下button2,textview的内容改变为按下对应按钮的名字
等效的 如果暂时将应用放置后台运行再被重新加载也会触发onCreate 来恢复数据



onSaveInstanceState
通过activity中的 onSaveInstanceState方法 来保存后台杀死后的 界面存放的数据
outState.putString("KEY", button2.getText().toString());//把button2的内容存储在key键中
package com.example.orientation;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String TAG = "myLog";
TextView textview;
Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button2 = findViewById(R.id.button2);
textview = findViewById(R.id.textView);
if (savedInstanceState != null) {//有数据存储
String s = savedInstanceState.getString("KEY");
textview.setText(s);
}
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textview.setText(button2.getText().toString());
}
});
}
@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("KEY", button2.getText().toString());//把button2的内容存储在key键中
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy: ");
}
}
完整代码:https://github.com/Dxoca/AndroidPractice_orientation
本文地址:https://www.dxoca.cn/StudyNotes/326.html 百度已收录
版权说明:若无注明,本文皆为“Dxoca's blog (寒光博客)”原创,转载请保留文章出处。