美文网首页
启动界面闪烁问题

启动界面闪烁问题

作者: 小川君 | 来源:发表于2018-08-28 13:00 被阅读0次

    首先是appclication的主题设置,主要是为其背景色设置为白色,如果不设置的话,状态来会有一个黑色背景

        <application
            android:name=".app.App"
            android:theme="@style/AppTheme">
        </application>
    
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="windowNoTitle">true</item>
            <item name="android:windowBackground">@color/white</item>
            <item name="android:windowContentOverlay">@null</item>
        </style>
    

    然后就是启动界面的主题 ,父主题是全屏无标题主题,然后为activity的窗口背景设置启动背景图

        <style name="welcomeThemeStyle" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
            <item name="android:windowContentOverlay">@null</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:background">@mipmap/welcome</item>
        </style>
    

    启动界面的xml文件可以为空内容,主要根据具体业务,因为我这里的启动界面没有任何的交互逻辑,所以我这里就是空的

    <?xml version="1.0" encoding="utf-8"?>
    <View xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </View>
    

    activity文件里面,我原先有设置全屏和透明状态栏透明底部虚拟导航栏,如下

       @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().requestFeature(Window.FEATURE_NO_TITLE);
    
            if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    
                Window window = getWindow();
    
                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
    
                        | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    
                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
    
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
    
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    
                window.setStatusBarColor(Color.TRANSPARENT);
    
            }
            setContentView(R.layout.activity_welcome);
    }
    

    所以就引来了相应的问题,具体就是因为设置了底部虚拟导航栏为透明,会导致底部导航栏空出一部分空间,然后整个启动的界面就会"下陷"一部分高度,因为启动界面是一张图片,就会出现图片的"抖动"问题,所以这里什么也不设置即可;

        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
                finish();
                return;
            }
            setContentView(R.layout.activity_welcome);
    }
    

    相关文章

      网友评论

          本文标题:启动界面闪烁问题

          本文链接:https://www.haomeiwen.com/subject/xuvfwftx.html