APP 启动时白屏黑屏解决方案 - 老司机带路有卡打卡没卡投币

1,910 阅读2分钟
原文链接: blog.csdn.net

版权声明:我贴的代码,都是复制粘贴直接可用的;代码开源但并不代表代码免费

1、在项目styles.xml文件中添加一个style


<item name="android:windowBackground">@drawable/android_ios</item>

//插入代码:line1汉字末尾回车到line2,空格两个后回车到line3,按一下tab,代码缩进一致即可
2、在mainfest文件中对启动页activity进行配置

       
        
            

            
        
    

3、activity中的配置:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initView();// 无论啥情况 都要加载哦
}
private void initView() {
    // 不显示系统的标题栏,保证windowBackground和界面activity_main的大小一样,显示在屏幕不会有错位(去掉这一行试试就知道效果了)
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    // 注意:添加3秒睡眠,以确保黑屏一会儿的效果明显,在项目应用要去掉这3秒睡眠
    try {
        Thread.sleep(500);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    // 停留3秒后发送消息,跳转到MainActivity
    mHandler.sendEmptyMessageDelayed(MSG_FINISH_LAUNCHERACTIVITY, 1000);
}

public Handler mHandler = new Handler() {
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case MSG_FINISH_LAUNCHERACTIVITY:
                dealStatus();// 可以选选择进行setcontentview等操作;
                break;
            default:
                break;
        }
    }
};

原理:activity启动时,windowbackground比setcontentview要先加载,这一段时间如果theme是白的、透明的。屏幕就是白色的,黑的就会显示黑屏,不美观;
如果是小项目,直接用设计图即可,复杂大型项目的windowbackground,图片应该严格处理,方案如下:

一、提供.png背景图

提供背景图是解决的一个方法,但是要适配各种屏幕,提供很多张图片。除非图片非常复杂只能用背景图了就用这种方法吧,否则个人不建议。

二、提供.9.png(NinePatch)背景图片

如果图片不是很复杂,可以做成NinePatch图片,那就直接制作NinePatch图片,提供一张就可以适配任何手机,何乐而不为呢。

三、使用Layout-list制作背景图片

如果可以使用这种方式,推荐使用这种Layout-list制作背景图片。前2种都是使用图片占用内存啊,使用Layout-list比较省内存,做出app也不会说因为图片多体积变大吧。