禁止屏幕旋转 180 度,只能旋转 90 、 270 度

问题描述:禁止屏幕旋转 180 度,只能旋转 90 、 270 度

分析过程:

PhoneWindowManager.java 中 rotationForOrientationLw 中有一段代码是负责这个问题的,如下:

if (mAllowAllRotations < 0) {
mAllowAllRotations = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_allowAllRotations) ? 1 : 0;
}
if (sensorRotation != mUpsideDownRotation
|| mAllowAllRotations == 1
|| orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR
|| orientation == ActivityInfo.SCREEN_ORIENTATION_FULL_USER) {
preferredRotation = sensorRotation;
} else {
preferredRotation = lastRotation;
}
mAllowAllRotations 的默认值为 -1 ,也就是 mAllowAllRotations 由 config_allowAllRotations 这个
参数负责,当 config_allowAllRotations 为 false , mAllowAllRotations 为
0 。 mUpsideDownRotation 的值为 2 ,方向分为 mLandscapeRotation
( 1 )、 mSeascapeRotation ( 3 )、 mPortraitRotation ( 0 ) 、 mUpsideDownRotation ( 2 ) 。
sensorRotation 为 sensor 方向,手机实际的感应方向, lastRotation 为上一次的屏幕方向。当手机旋转
180 时, sensorRotation 为 2 , mUpsideDownRotation 也为 2 ,此时决定 preferredRotation 方向的只
有判断参数 mAllowAllRotations 是否等于 1 ,如果等于 1 ,则 preferredRotation = sensorRotation 可

以旋转 180 度,如果不等于 1 ,则 preferredRotation = lastRotation ,不能旋转 180 。

解决方案:
diff --git a/device/qcom/common/product/overlay/frameworks/base/core/res/res /values/config.xml
b/device/qcom/common/product/overlay/frameworks/base/core/res/res /values/config.xmlindex b3b7275..7082f01 100644 (file)
+++ b/device/qcom/common/product/overlay/frameworks/base/core/res/res /values/config.xml
@@ +119,14 @@
<bool name="config_suspendWhenScreenOffDueToProximity">true</bool>
<integer name="config_doubleTapOnHomeBehavior">1</integer>
+
<bool name="config_allowAllRotations">false</bool>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值