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 就会发生改变 无论你有没有设置方向 而此时就有可能删除 这是数据问题 异常自己捕获就好了

猜你喜欢

转载自blog.csdn.net/naide_s/article/details/80841265