一般手机只能旋转3个方向,这里将介绍如何让手机可以旋转180度,也就是上下颠倒。
1.静态方法
frameworks/base/core/res/res/values/config.xml
config_allowAllRotations通过这个来设置。
2.动态方法
在手机确认要旋转后,就会走PhoneWindowManager.java的onProposedRotationChanged。
然后走
再走WindowManagerService.java的updateRotation。
再走
再走DisplayContent.java的updateRotationUnchecked
最后走PhoneWindowManager.java的rotationForOrientationLw
这里主要就是修改mAllowAllRotations的值,虽然每次旋转都要走这个判断要不要选择180度,但是实际上就判断一次,因为mAllowAllRotations这个值变了之后就不会再走赋值的地方了,可以看代码。所以我们要每次都要去根据要不要选择180度来改变这个值,所以每次进来先mAllowAllRotations=-1,然后就会走到赋值的那个里面,进行赋值。
是否要旋转180度的数据库。
注意:如果先把180度关闭,打开自动选择,把手机选择180度,然后再打开180度开关,这时候屏幕不会选择180度,正确的,但是当你再关闭自动旋转的时候,屏幕会先选择180度,然后再旋转回来。有问题,所以多加了个判断。