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

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

<style name="startpage" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/android_ios</item></style>

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

       <activity
        android:name=".login.WelcomeActivity"
        android:theme="@style/startpage">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </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也不会说因为图片多体积变大吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值