Android12 SplashScreen默认闪屏页透明化

android12 默认闪屏页透明化

两种方式:

  1. app入口activity 主题theme添加以下item
    <!-- 闪屏页透明 跳转该activity相当于弹出dialog(悬浮窗口) -->
    <item name="android:windowIsTranslucent">true</item>

注:

  • 在styles.xml 入口activity的样式中添加如上item,即可透明化闪屏页
  • 添加该属性后,会有副作用: A activity跳转到添加该属性的B应用(入口activity)时,B应用会以悬浮弹窗dialog的形式显示在A activity的上面,A activity 会走onPause(),不会走onStop()
  • 判断diolog是否会对当前的activity生命周期造成影响:
    1. 由activity本身弹出的dialog不会走生命周期
    2. 弹出的主题是dialog的activity会走onPause()方法,不会走onStop()
  1. framework层: 在添加闪屏页view时将其隐藏或设置透明度为0
+++ b/frameworks/base/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java
@@ -320,6 +320,12 @@ public class StartingSurfaceDrawer {
    
    
                 // if view == null then creation of content view was failed.
                 if (contentView != null) {
    
    
                     try {
    
    
+                        if (activityInfo.packageName.equals("com.demo.demo")){
    
    
+                            contentView.setAlpha(0.0F);
+                            contentView.setVisibility(View.INVISIBLE);
+                        }
                         rootLayout.addView(contentView);
                     } catch (RuntimeException e) {
    
    
                         Slog.w(TAG, "failed set content view to starting window "

猜你喜欢

转载自blog.csdn.net/qq_44256828/article/details/129652422