目前一般情况下 在横竖屏情况下 我们会遇到一些问题 例如横竖屏显示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 就会发生改变 无论你有没有设置方向 而此时就有可能删除 这是数据问题 异常自己捕获就好了
网友评论