android旋转180
① 如何使控件或者layout旋转180度
控件旋转:将android:rotation="180"写在layout下的.xml文件中对应的控件里
layout旋转:将android:screenOrientation="landscape"写在AndroidManifest.xml文件中对应的Activity里
② Android只支持横屏旋转,监听自动旋转开关
设置横屏其实很简单,就是设置android:screenOrientation就可以。所以我们先来了解一下android:screenOrientation的属性都有哪些?
unspecified,默认值,由系统决定,不同手机可能不一致
landscape,强制横屏显示
portrait,强制竖屏显
behind,与前一个activity方向相同
sensor,根据物理传感器方向转动,用户90度、180度、270度旋转手机方向,activity都更着变化
sensorLandscape,横屏旋转,一般横屏游戏会这样设置
sensorPortrait,竖屏旋转
nosensor,旋转设备时候,界面不会跟着旋转。初始化界面方向由系统控制
user,用户当前设置的方向
而满足我们需求的属性,分别为
1 landscape :强制横屏,不管自动旋转开关是否开启,都只能是正方向横屏,不会180度旋转
2 sensorLandscape : 横屏旋转,不管自动旋转开关是否开启,都会180度旋转
这两个属性明显不满足我们的需求,这时候我们只能去监听自动旋转开关的状态,然后设置对应的screenOrientation,这样才能满足需求。
但是这只是一次获取,所以我们需求实时监听开关状态。
我们通过ContentObserver来监听自动开关状态的改变
了解了这些之后,我们就能完成需求了
1 初始化监听
2 注册监听
3 退出时取消监听
4 相关的类与方法
③ 如何让Android屏幕只能上下翻转
让安卓屏幕只能上下翻转需要设置。
步骤为:
进入设置选项。
进入显示选项。
勾选“自动旋转屏幕”选项
在“旋转模式”中勾选“0度”和“180度”选项
这样就可以让安卓屏幕只能上下翻转了。
④ Android 横屏旋转180°监听方式
横屏180°旋转系统不会回调到到 onConfigurationChanged() ,只能使用其他的方案,目前有2个方案
1、使用 OrientationEventListener 监听屏幕的旋转,里面本质使用的是 TYPE_ACCELEROMETER 传感器,具体如下:
开启调用 mOrientationListener. enable() , 关闭调用 mOrientationListener. disable() ;这种方式对性能消耗比较大, 但是可以获取到手机当前的角度
2、使用监听 DisplayManager 方式,手机切换方向会导致UI 显示的改变,所以会回调到这里
这种方式不会耗性能
⑤ Android系统开机屏幕倒转180°显示
需求,开机时默认屏幕是倒过来的,需要修改一个属性:ro.sf.hwrotation,在系统根目录下的framework文件夹和device文件夹搜索该字段
可以看到在framework和device文件夹中哪些使用了这个字段。
将device目录下的这几个system.prop文件中的ro.sf.hwrotation值从0改为180就可以实现屏幕倒过来显示,记住开机画面是不归属这个属性控制的,需要自己将开机的图片倒过来,修改系统根目录下的kernel文件夹下的logo.bmp图片就好
./rockchip/rk3288/rk3288_box/system.prop:31:ro.sf.hwrotation=180
./rockchip/rk3288/system.prop:39:ro.sf.hwrotation=180
./rockchip/common/system.prop:31:ro.sf.hwrotation=180