Android 启动页黑屏问题

做过Android的朋友都知道,当一个APP启动时,界面会首先展示一个白屏或者黑屏,然后再进入欢迎页,稍作停留最后进入APP主页。那么这个黑屏或者白屏到底是怎么一回事呢?

当系统启动一个APP时,zygote进程会首先创建一个新的进程去运行这个APP,但是进程的创建是需要时间的,在创建完成之前,界面是呈现假死状态的,用户会以为没有点到APP而再次点击,这极大的降低用户体验。

方法一:

自定义Preview Window,直接在style.xml文件中设置图片

 <style name="AppSplash" parent="AppTheme">
    <item name="android:windowBackground">@mipmap/splash</item>
 </style>
<activity
    android:name=".view.login.SplashActivity"
    android:theme="@style/AppSplash">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

方法二:

我们可以在启动页增加一些动画效果进行过渡,这样界面看着会顺畅许多。

这里写图片描述

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().setBackgroundDrawable(null);
    initStatus();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    final ImageView imageView = findViewById(R.id.imageView);
    imageView.post(new Runnable() {
        @Override
        public void run() {
            startAnim(imageView);
        }
    });
}
ObjectAnimator alphaAnim = ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1f);
ObjectAnimator scaleXAnim = ObjectAnimator.ofFloat(imageView, "scaleX", 1f, 1.2f);
ObjectAnimator scaleYAnim = ObjectAnimator.ofFloat(imageView, "scaleY", 1f, 1.2f);
AnimatorSet set = new AnimatorSet();
set.play(scaleXAnim).with(scaleYAnim).with(alphaAnim);
set.setDuration(3 * 1000);
set.setInterpolator(new AccelerateInterpolator());
set.start();
set.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        super.onAnimationEnd(animation);
        startActivity(new Intent(SplashActivity.this, MainActivity.class));
        SplashActivity.this.finish();
    }
});

代码下载

猜你喜欢

转载自blog.csdn.net/qq_14876133/article/details/81873852
今日推荐