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

      

    
    
    
    




  • 相关阅读:
    angularJS解决数据显示闪一下的问题?-解决办法
    js 做账单处理
    淘宝cnpm
    js 对象转数组
    js 移动端上拉刷新(基于ng1)
    js 控制超出字数显示省略号
    select2 插件编辑时设置默认值
    select2 插件加载后端数据
    js 依据“;”折行
    css 两段对齐和超出部分...
  • 原文地址:https://www.cnblogs.com/gfwei/p/11770553.html
Copyright © 2020-2023  润新知