1. 这也是一个需求问题,之前实现了一个activity+fragment(FragmentTransaction 我这边是用的开启事务来管理的fragment,当我只显示某个Fragment页面,就将其他的多余的页面去隐藏) 展示页面信息数据的一个功能app,第一个版本的时候功能少,单一,我只需要处理竖屏的页面显示即可,因此我也是简单的在AndroidManifest文件清单去设置activity 下的
android:screenOrientation=”xxxxx” landscape 表示始终横屏, portrait 表示始终竖屏 的值。
2.到了第二个版本,再去用上面的方式就不行了,这边考虑适配(这边用的是 Androidautosize )你也可以看我的另一篇Androidautosize使用注意事项 ,和其他页面的横竖屏切换问题了,奇葩的是,我这边有一个页面是要固定是竖屏(由于竖屏的布局是写死的排版,在横屏的时候,导致布局会错乱和文字重叠问题影响整个app的使用和美化问题),其他要横竖屏切换适配,尝试了很多方法,最后找的一下资料参考,可以用下面的方式去做,我这边的单个activity是主的控制多个fragment 的独立页面。
3.我这边用的也是在AndroidManifest文件清单去设置activity下添加多一句:
android:configChanges="orientation|keyboardHidden|screenSize"
加了这一句,只是处理横竖屏,不销毁activity的生命周期,重启。然后我们再通过单个fragment的 onHiddenChanged的方法来处理横竖屏的切换问题:
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (hidden) {
// Log.i(TAG, "隐藏");
} else {
// Log.i(TAG, "显示");
//指定屏幕的方向为竖屏
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Activity屏幕属性有以下几种:
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,//指定横屏
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,//指定竖屏
ActivityInfo.SCREEN_ORIENTATION_USER,//根据用户朝向
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR,//不受重力影响
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,//横屏动态转换
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,//竖屏动态转换
ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR,//根据重力变换朝向
通过种方式去处理,可以实现自己的功能需求这里做个笔记记录一下自己的处理方式,方便自己的学习。当然我这边的处理方法是比较常用的做法,如果你有更好的横竖屏切换方式可以评论留言,一起探讨横竖问题。