修改屏幕顯示方向

1.修改屏幕方向

如果顯示屏支持橫豎屏,直接修改MTK_LCM_PHYSICAL_ROTATION的值
① 修改device/testdd/testdd6735_35g_m0/ProjectConfig.mk

-MTK_LCM_PHYSICAL_ROTATION = 0
+MTK_LCM_PHYSICAL_ROTATION = 270

②修改kernel-3.18/arch/arm/configs/testdd6735_35g_m0_debug_defconfig

-CONFIG_MTK_LCM_PHYSICAL_ROTATION="0"
+CONFIG_MTK_LCM_PHYSICAL_ROTATION="270"

③修改kernel-3.18/arch/arm/configs/testdd6735_35g_m0_defconfig

-CONFIG_MTK_LCM_PHYSICAL_ROTATION="0"
+CONFIG_MTK_LCM_PHYSICAL_ROTATION="270"

④修改vendor/mediatek/proprietary/bootable/bootloader/lk/project/testdd6735_35g_m0.mk

-MTK_LCM_PHYSICAL_ROTATION = 0
+MTK_LCM_PHYSICAL_ROTATION = 270

平板平臺,這種修改整個系統都變豎屏顯示了,包括logo、動畫,tp等

2.屏幕180翻轉,通過硬件OVL來實現

① 修改device/testdd/testdd6735_35g_m0/ProjectConfig.mk

+MTK_LCM_PHYSICAL_ROTATION_HW = yes

②修改kernel-3.18/arch/arm/configs/testdd6735_35g_m0_debug_defconfig

+CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW=y

③修改kernel-3.18/arch/arm/configs/testdd6735_35g_m0_defconfig

+CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW=y

④修改vendor/mediatek/proprietary/bootable/bootloader/lk/project/testdd6735_35g_m0.mk

+MTK_LCM_PHYSICAL_ROTATION_HW=yes
+DEFINES += MTK_LCM_PHYSICAL_ROTATION_HW

⑤修改vendor/mediatek/proprietary/hardware/hwcomposer/Android.mk

+ifeq ($(MTK_LCM_PHYSICAL_ROTATION_HW), yes)
+	LOCAL_CFLAGS += -DMTK_LCM_PHYSICAL_ROTATION_HW
+endif

3.模擬sensor旋轉屏幕顯示

  • 源碼位置:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
  @Override
  public int rotationForOrientationLw(int orientation, int lastRotation) {
+    if (true) {
+        return Surface.ROTATION_90;
+    }
		...

模擬sensor旋轉屏幕,根據需要返回角度(順時針旋轉),但是在剛開完機時會看到轉屏動作

4.修改動畫方向

對動畫資源本身不作處理,直接修改其顯示方向

  • 源碼位置:framework/base/cmds/bootanimation/BootAnimation.cpp
 status_t BootAnimation::readyToRun(){
 	...
   // M: The tablet rotation maybe 90/270 degrees, so set the lcm config for tablet
 -  SurfaceComposerClient::setDisplayProjection(dtoken, DisplayState::eOrientationDefault, Rect(dinfo.w, dinfo.h), Rect(dinfo.w, dinfo.h));
 +  // 旋轉180
 +  SurfaceComposerClient::setDisplayProjection(dtoken, DisplayState::eOrientation180, Rect(dinfo.w, dinfo.h), Rect(dinfo.w, dinfo.h));

5.修改ro.sf.hwrotation值

在config目錄中對應工程下system.prop文件中加入 ro.sf.hwrotation=90(或270)可以實現90度和270度的旋轉,不過此設定只是改變android部分 的旋轉,logo部分不會旋轉,動畫會旋轉,同時android本身在橫向顯示的時候,有些資源橫向顯示會有問題, 所以不推薦使用~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章