美文网首页
Android 横竖屏切换以及横屏启动闪退问题

Android 横竖屏切换以及横屏启动闪退问题

作者: nade_s | 来源:发表于2018-07-12 15:15 被阅读0次

    目前一般情况下 在横竖屏情况下 我们会遇到一些问题 例如横竖屏显示ui 比例问题 还有activity重启问题 今天说三个问题 一是横竖屏切换 二是 禁止屏幕旋转

    说一下屏幕切换时 的activity 生命周期 

    onPause()—->onDestroy()—–>onCreate()

    先说第一个 横竖屏切换 一般的套路如下

    在manifast.xml 中 给当前activity配置 防止activity在屏幕切换时 activity 重建问题

    android:configChanges="orientation|keyboardHidden|screenSize"

    获取屏幕方向

    int orientation = getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_LANDSCAPE) {

                setContentView(R.layout.horizontallayout);        } else if (orientation == Configuration.ORIENTATION_PORTRAIT) {

                setContentView(R.layout.verticallayout);}

    监听屏幕方向 并处理数据

    @Override public void onConfigurationChanged(Configuration newConfig) {

              // 处理你的数据        super.onConfigurationChanged(newConfig);

        }

    二 禁止屏幕旋转 

    第一 要先设置屏幕方向

    manifast.xml 设置给activity屏幕方向

    android:screenOrientation="portrait"// 设置竖屏android:configChanges="orientation|keyboardHidden|screenSize"// 防止activity 重建

    在java 代码中设置

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    二者选一即可

    第二  为了防止用户开启了屏幕切换权限 进行屏幕监听

    @Override    public void onConfigurationChanged(Configuration newConfig) {

                  // 进行数据处理        super.onConfigurationChanged(newConfig);

        }

    第三  保存数据 防止activity 被销毁重建 进行数据处理

    @Override    protected void onSaveInstanceState(Bundle outState) {

            super.onSaveInstanceState(outState);

        // 保存数据    }

    或者在onpush 方法中保存

    在oncreate() 方法中获取数据 进行设置即可

    注意 此处会有一个问题 就是 当客户开启了屏幕旋转的权限时 横屏启动时可能会出现闪退 情况

    先说一下 我们的app 启动 app 启动默认的竖屏启动的 但是如果在启动过程中 app 感应到重力发生变化 activity 就会发生改变 无论你有没有设置方向 而此时就有可能删除 这是数据问题 异常自己捕获就好了

    相关文章

      网友评论

          本文标题:Android 横竖屏切换以及横屏启动闪退问题

          本文链接:https://www.haomeiwen.com/subject/vehrpftx.html