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

目前一般情况下 在横竖屏情况下 我们会遇到一些问题 例如横竖屏显示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 横竖屏切换以及横屏启动闪退问题)