开机动画完毕后出现竖屏转横屏的现象
开机后第一帧是竖屏,log:
Line 4531: 05-25 03:49:50.286 814 814 V ViewRootImpl[FallbackHome]: Measuring DecorView@240e6d9[FallbackHome] in display 800x1280...
Line 4532: 05-25 03:49:50.289 814 814 V ViewRootImpl[FallbackHome]: Measuring DecorView@240e6d9[FallbackHome] in display 800x1280...
Line 4533: 05-25 03:49:50.289 814 814 V ViewRootImpl[FallbackHome]: Laying out DecorView@240e6d9[FallbackHome] to (800, 1280)
随后第二帧是横屏,横屏log:
Line 5316: 05-25 03:49:51.947 814 814 V ViewRootImpl[FallbackHome]: Measuring DecorView@d7c3dd1[FallbackHome] in display 1280x800...
Line 5318: 05-25 03:49:51.954 814 814 I ViewRootImpl[FallbackHome]: host=w:1280, h:800, params={(0,0)(fillxfill) sim={adjust=pan} ty=BASE_APPLICATION fmt=TRANSPARENT wanim=0x10302fe
Line 5319: 05-25 03:49:51.954 814 814 I ViewRootImpl[FallbackHome]: fl=LAYOUT_IN_SCREEN LAYOUT_INSET_DECOR SHOW_WALLPAPER SPLIT_TOUCH HARDWARE_ACCELERATED DRAWS_SYSTEM_BAR_BACKGROUNDS
1 尝试将开机动画延长2-3秒关闭,FallbackHome不再显示出来。
修改如下:
ro.target.product=box
方法不适用,开机动画是竖屏,launcher是横屏,出现开机动画和launcher无法吻合叠加情况。
2 FallbackHome是个透明的acivity,这里将FallbackHome 设置成横屏无效,
<!-- Triggered when user-selected home app isn't encryption aware -->
<activity android:name=".FallbackHome"
android:excludeFromRecents="true"
android:label=""
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:screenOrientation="reverseLandscape"
android:taskAffinity="com.android.settings.FallbackHome">
<intent-filter android:priority="-1000">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
3 然后全屏,去掉状态栏,去掉壁纸,去掉navgationbar,保证不显示,看不到旋转动画,规避这个问题。
修改如下:
src/com/android/settings/FallbackHome.java
@@ -38,7 +38,7 @@ import android.util.Log;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
-
+import android.content.pm.ActivityInfo;
import java.util.Objects;
public class FallbackHome extends Activity {
@@ -84,19 +84,18 @@ public class FallbackHome extends Activity {
Settings.Global.DEVICE_PROVISIONED, 0) != 0;
final int flags;
if (!mProvisioned) {
- setTheme(R.style.FallbackHome_SetupWizard);
- flags = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+ //setTheme(R.style.FallbackHome_SetupWizard);
+ flags = View.INVISIBLE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
} else {
- flags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
+ flags = View.INVISIBLE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
mWallManager = getSystemService(WallpaperManager.class);
if (mWallManager == null) {
Log.w(TAG, "Wallpaper manager isn't ready, can't listen to color changes!");
} else {
- loadWallpaperColors(flags);
+ //loadWallpaperColors(flags);
}
getWindow().getDecorView().setSystemUiVisibility(flags);
@@ -187,11 +186,9 @@ public class FallbackHome extends Activity {
// current system ui color tints.
private int updateVisibilityFlagsFromColors(WallpaperColors colors, int flags) {
if ((colors.getColorHints() & WallpaperColors.HINT_SUPPORTS_DARK_TEXT) != 0) {
- return flags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
- | View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR;
+ return flags | View.INVISIBLE;
}
- return flags & ~(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)
- & ~(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR);
+ return flags | View.INVISIBLE;
}
验证pass,开机后看不到转屏现象。