修改系统默认自动旋转--关闭跟随系统旋转,并默认设为横屏(修改SettingProvider中的default.xml)

开机默认固定横屏,是指第一次刷机开机或恢复出厂设置,开机时Launcher固定横向。当然,想要开机动画等同样横向显示,则需修改驱动的启动部分,在此,只说说应用层的默认固定横向。

       在frameworks/base/packages/SettingsProvider/res/values/defaults.xml中,

<bool name="def_accelerometer_rotation">false</bool>

      将它设置为false,则表示默认固定方向,就不再是自由旋转了。至于固定的哪个方向,就要看在Settings中定义的Settings.System.USER_ROTATION了。在这里,再在defaults.xml中设置def_user_rotation已经不起作用了,因为它的初始化的代码执行不到:

 
  1. if (upgradeVersion == 59) {

  2.     // Persistence for the rotation lock feature.

  3.     db.beginTransaction();

  4.     SQLiteStatement stmt = null;

  5.     try {

  6.         stmt = db.compileStatement("INSERT INTO system(name,value)"

  7.                 + " VALUES(?,?);");

  8.         loadBooleanSetting(stmt, Settings.System.USER_ROTATION,

  9.                 R.integer.def_user_rotation); // should be zero degrees

  10.         db.setTransactionSuccessful();

  11.     } finally {

  12.         db.endTransaction();

  13.         if (stmt != null) stmt.close();

  14.     }

  15.     upgradeVersion = 60;

  16. }

        因此,要想自己决定它的固定方向,可以在frameworks/base/packages/SettingsProvider/下的DatabaseHelper.java中加载它的值进去:

 
  1. private void loadSystemSettings(SQLiteDatabase db) {

  2.     ...

  3. loadIntegerSetting(stmt, Settings.System.USER_ROTATION,

  4. R.integer.def_user_rotation);

  5.     ...

  6. }

        其中,def_user_rotation值默认为0,为竖向,1为旋转90度,2为旋转180度,3为270度,固定横向就需要设置它为1。

        当然,所有以上都有一个大前提便是:桌面可旋转,并且系统可固定横向。

        设置桌面可旋转在packages/apps/Launcher3/res/values/config.xml中,将allow_rotation的值设置为true;可固定横向在frameworks/base/core/res/res/values/config.xml中,将config_allowAllRotations设置为true。

注意:横屏可以设为1或3。看设备具体是怎么放的。

设def_accelerometer_rotation为false,设def_user_rotation为1或3  就是默认设为不跟随系统旋转,并且屏幕默认是在竖屏基础上旋转90或270度。

猜你喜欢

转载自blog.csdn.net/b1480521874/article/details/81204546