解决App启动之后短暂的空白画面

来源:互联网 发布:java sftp 上传文件 编辑:程序博客网 时间:2024/05/17 23:18

1.解决App启动之后短暂的空白画面(白屏或者黑屏,和自己使用的主体有关),在style中使用

    <!-- Base application theme-->    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">        <!-- Customize your theme here. -->        <item name="colorPrimary">@color/colorPrimary</item>        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>        <item name="colorAccent">@color/colorAccent</item>    </style>    <!--全屏-->    <style name="AppTheme.FullScreen" parent="AppTheme">        <!--ActionBar 隐藏 下面两个一起使用-->        <item name="windowActionBar">false</item>        <item name="windowNoTitle">true</item>        <!--状态栏透明-->        <item name="android:windowTranslucentStatus">true</item>        <!--导航栏透明 华为手机虽然透明但依然可见图标,-->        <item name="android:windowTranslucentNavigation">true</item>        <!--全屏-->        <item name="android:windowFullscreen">true</item>        <!-- 是否允许背景灰暗 -->        <item name="android:backgroundDimEnabled">false</item>    </style>    <!--解决启动画面背景是白屏或者黑屏的尴尬-->    <style name="AppTheme.Splash" parent="AppTheme.FullScreen">        <item name="android:background">@drawable/bg_splash</item>    </style>

上面的 全屏styel使用之后,还是会看到导航栏透明,为了让全屏更加彻底,需要在java代码中设置一下:

    public static void hideSystemUi(Window window) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN                    | View.SYSTEM_UI_FLAG_FULLSCREEN                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION                    | View.SYSTEM_UI_FLAG_IMMERSIVE);        }    }

另外 设置android:background的时候,一定要使用drawable中的图片资源,否则没有效果;


2.Activity页面跳转动画效果使用android:windowAnimationStyle来设置,比如:

    <!-- 淡入淡出动画 -->    <style name="activity_switch_fade" parent="AppTheme">        <item name="android:windowAnimationStyle">@style/fade</item>    </style>    <style name="fade" parent="@android:style/Animation.Activity">        <item name="android:activityOpenEnterAnimation">@anim/act_switch_fade_in</item>        <item name="android:activityOpenExitAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseEnterAnimation">@anim/act_switch_no_anim</item>        <item name="android:activityCloseExitAnimation">@anim/act_switch_fade_out</item>    </style>

android:activityOpenEnterAnimation:
表示Activity创建进入效果
android:activityOpenExitAnimation:
表示Activity还没有finish()下退出效果
android:activityCloseEnterAnimation:
表示上一个activity返回进入效果
android:activityCloseExitAnimation:
表示Activity finish()之后退出效果

比如比如有两个activity A和B, A上面有个按钮可以打开B, 点击按钮后,
A执行第二个动画(android:activityOpenExitAnimation)
B执行第一个动画(android:activityOpenEnterAnimation)
如果此时按下返回键,B退出,A显示,则此时A执行动画3(android:activityCloseEnterAnimation)
B执行动画4(android:activityCloseExitAnimation)