平时在定制系统时,有的客户需要系统有不同的显示方向,这时候就需要对系统显示界面进行旋转操作,并希望每次开机启动默认显示旋转后的方向。
修改/device/rockchip/rk3288/system.prop文件下面的参数:
配置属性 ro.sf.hwrotation = 0/90/180/270
如上修改后会发现开机后, 开机画面方向是正确的,进入锁屏界面, 屏幕做了一次旋转操作, 这个时候窗口才真正的达到了我们想要的方向。
有没有觉得有点太粗糙了,体验有点太差, 那就需要进入锁屏前就把方向调整好。
可以在frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java里面修改WindowManagerService:
boolean updateOrientationFromAppTokensLocked(boolean inTransaction) {
long ident = Binder.clearCallingIdentity();
try {
// int req = getOrientationLocked();
/*SCREEN_ORIENTATION_LANDSCAPE :横屏显示,SCREEN_ORIENTATION_PORTRAIT : 竖屏显示*/
int req = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
if (req != mLastOrientation) {
mLastOrientation = req;
android_7.1之前旋转方向我们可以通过修改build.prop里的ro.sf.hwrotation=0属性实现,但是当应用到android_9.0时此属性设置无效。
查看device/rockchip/common/device.mk下的代码发现:
# ConfigStoreHAL, for HWRotation, set SF_PRIMARY_DISPLAY_ORIENTATION to change it.
PRODUCT_PACKAGES += \
android.hardware.configstore@1.1-service
方法一:
按照说明使用SF_PRIMARY_DISPLAY_ORIENTATION可以设置HWRotation方向,那么在device/rockchip/common/BoardConfig.mk添加代码:
SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270
编译后实现旋转效果。
方法二:
#rotate screen to 0, 90, 180, 270
#0: ROTATION_NONE
#90: ROTATION_RIGHT
#180: ROTATION_DOWN
#270: ROTATION_LEFT
TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_LEFT
# 屏幕旋转270度
SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270
编译后实现旋转效果。
基本与Android9.0的方法差不多,代码稍微有点出入。
#rotate screen to 0, 90, 180, 270
#0: ROTATION_NONE ORIENTATION_0 : 0
#90: ROTATION_RIGHT ORIENTATION_90 : 90
#180: ROTATION_DOWN ORIENTATION_180: 180
#270: ROTATION_LEFT ORIENTATION_270: 270
# For Recovery Rotation
TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_LEFT
# For Surface Flinger Rotation
SF_PRIMARY_DISPLAY_ORIENTATION ?= 270 //可配置的参数:0,90,180,270
2.在device/rockchip/rk356x/BoardConfig.mk下,修改参数:
SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270
注:此方法只针对开机动画到系统launch启动后界面的旋转显示;如果要系统整体实现旋转,kernel与uboot开机logo图片(bmp格式)可手动替换成相对应方向;这样整个系统从开机logo到系统界面就可以达到系统旋转的效果。
相关文章链接:
Android系统 开机启动默认旋转主屏幕方向问题 --(二)
Android系统 开机启动默认旋转主屏幕方向问题 --(三)