寒光博客

【Android】ScreenOrientation 屏幕方向旋转相关操作 数据保存与恢复 onSaveInstanceState
ScreenOrientation android屏幕旋转锁定 1.AndroidManifest.xml设置 如...
扫描右侧二维码阅读全文
20
2020/03

【Android】ScreenOrientation 屏幕方向旋转相关操作 数据保存与恢复 onSaveInstanceState

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

本文作者:Author:     文章标题:【Android】ScreenOrientation 屏幕方向旋转相关操作 数据保存与恢复 onSaveInstanceState
本文地址:https://dxoca.cn/StudyNotes/326.html       百度已收录
版权说明:若无注明,本文皆为“Dxoca's blog (寒光博客)”原创,转载请保留文章出处。
Last modification:March 26th, 2020 at 10:19 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment