十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在设置中开启自动旋转屏幕或者关闭方向锁定,打开支持横竖屏切换的应用后,就可以自动切换了,
成都创新互联公司服务项目包括乐陵网站建设、乐陵网站制作、乐陵网页制作以及乐陵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,乐陵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到乐陵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
而如果应用本身只支持横屏或者只支持竖屏,那就不能切换了。
同个Activity而言,没有切换之前的生命周期,如下:
旋转屏幕之后,生命周期会如下:
配置 1 适用我们普通应用,固定方向的开发,配置 2 适用于音视频开发,游戏开发。
确定你的设备有重力感应功能,如果没有的话只能用软件手动调整横竖屏显示。重力感应需要硬件支持的,设备必须内置重力感应模块(芯片)。
设置-声音和显示-在“方向”一项打钩。一般主屏幕是不支持重力感应的,软件的话基本上都支持。随便打开个浏览器,把机器一转,OK。
onCreate ,
创建activity时调用。设置在该方法中,还以Bundle中可以提出用于创建该 Activity 所需的信息。
onStart ,
activity变为在屏幕上对用户可见时,即获得焦点时,会调用。
onResume ,
activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)
onSaveInstanceState
onPause ,
activity被暂停或收回cpu和其他资源时调用,该方法用于保存活动状态的
onStop ,
activity被停止并转为不可见阶段及后续的生命周期事件时,即失去焦点时调用
onDestroy ,
activity被完全从系统内存中移除时调用,该方法被调用可能是因为有人直接调用 finish()方法 或者系统决定停止该活动以释放资源。
onRestoreInstanceState ,
Android在横竖排切换时候,将主动销毁activity和重新创建一个新的activity出来,在此过程中,onRestoreInstanceState就要被回调
onConfigurationChanged ,
配置指定属性后,屏幕方向发生变化后回调此函数.
把该Activity添加
android:configChanges="orientation" ,
执行步骤3(切换成横屏时)
android:configChanges="orientation" 对于4.04.0以上版本不生效
把该Activity添加 android:configChanges="orientation|screenSize" ,
执行步骤3(切换成横屏时)
onConfigurationChanged--
只打印onConfigChanged
把 android:configChanges="orientation|screenSize" 改成 android:configChanges="orientation|keyboardHidden|screenSize"
执行步骤3(切换横屏幕)
只打印
onConfigChanged
执行步骤4(切换竖屏幕)
只打印onConfigChanged
切记一定要加上后边的screenSize否则在4.0以上版本生命周期执行不生效。
当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变
Activity运行时按下HOME键(跟被完全覆盖是一样的):
onPause -- onStop onRestart --onStart---onResume
Activity未被完全覆盖只是失去焦点:onPause---onResume
测试用手机版本5.1.1
Android实现屏幕旋转方法
这种方法的优点:即使屏幕旋转,Activity也不会重新onCreate。
缺点:屏幕只有一个方向。
这个方法的优点:我们可以随时监听屏幕旋转变化,并对应做出相应的操作;
缺点:它只能一次旋转90度,如果一下子旋转180度,onConfigurationChanged函数不会被调用。
4.设置方向的其他方式
在AndroidManifest.xml设置
横向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
纵向显示,但是基于设备传感器,既可以是按正常方向显示,也可以反向显示,在API Level 9中被引入。
android:screenOrientation="sensorLandscape"
demo
面试被问到横竖屏切换时Activity的生命周期,正好记录一下验证过程~
新建Activity,重写各个生命周期方法:
运行Activity,生命周期如下:
切换横屏,生命周期如下:
再切回竖屏,生命周期如下:
修改AndroidManifest.xml,添加 android:configChanges="orientation" 并切换横屏,生命周期如下:
再切换竖屏,生命周期如下:
修改AndroidManifest.xml,属性改为 android:configChanges="orientation|keyboardHidden|screenSize" ,切换横屏,生命周期如下:
再切换回竖屏,生命周期如下:
标签中设置:android:screenOrientation
Activity 在设备上的显示方向。如果 Activity 是在 多窗口模式 下运行,系统会忽略该属性。
其值可以是下列任一字符串:
例如: android:screenOrientation="landscape" 横屏 android:screenOrientation="portrait" 竖屏