zoukankan      html  css  js  c++  java
  • 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);
     }
    

      

    
    
    
    




  • 相关阅读:
    Flutter: The getter 'futureDynamicType' was called on null.
    Android混合Flutter
    js bese64转化为blob使用FormData上传
    Flutter FractionallySizedBox 设置维度比例 而不是固定的px
    Flutter 区分开发环境和生产环境
    windows 隐藏desktop.ini文件
    Js中的reduce,fold和unfold
    精读Hooks 取数-swr源码
    WebSocket 原理浅析与实现简单聊天
    TypeScript 2.0 标记联合类型
  • 原文地址:https://www.cnblogs.com/gfwei/p/11770553.html
Copyright © 2011-2022 走看看