避免白屏有如下几种方案:

‌设置Theme窗口背景‌:

在应用的主题中设置windowBackground属性,提供一个定制的过渡颜色或图片。这样,在Activity的内容渲染完成之前,用户将会看到这个过渡背景,而不是一片空白。
示例代码(在styles.xml中自定义主题):

1
2
3
4
<style name="AppTheme" parent="...">
<!-- ...其他属性 -->
<item name="android:windowBackground">@color/transition_color</item>
</style>

其中,@color/transition_color应替换为你的应用中定义的一个过渡背景颜色资源引用。
‌定义SplashActivity‌:

创建一个SplashActivity作为启动时的过渡界面,该Activity可以在加载主界面内容的同时显示一个加载动画或静态图片。
在SplashActivity的onCreate方法中,使用Handler或CountDownTimer等机制延迟跳转到主界面Activity。
示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 可以选择不设置内容视图,直接显示主题背景
// setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}
}, 1500); // 延迟1500毫秒后跳转到MainActivity
}
}

‌设置背景透明‌:

通过设置Theme的android:windowIsTranslucent属性为true,使背景透明。但需要注意,这样设置可能会影响跳转或切换页面的动画效果。
如果需要自定义窗口动画,可以在主题中设置android:windowAnimationStyle属性。