团队冲刺第三天

今天主要做的是启动页的再一次优化,昨天的效果在启动时会有一个白屏的效果出来,这并不我预想的

今天已经解决了这个问题,并且再闪屏后加了一个可以手动跳过的倒计时动画。

解决方法,在上一篇冲刺的博客中闪屏动画用的是在一个setContentView(View)来实现的,虽然这不是主要原因,但为保证启动速度,不要调用setContentView()方法。因为Activity设置了layout,它在App完全初始化完成后才会显示,也会耗时。看到上面的解释,我们得知theme的设置才是这个白屏的原因,所以要改进这个问题要在theme上动手。

setContentView(R.layout.activity_splash);

一、修改上次的bug

现在的项目文件目录,箭头是改动的地方,话不多说上步骤

1.drawable下面放一张图片,作为开头的闪屏

2.values下面的styles定义一个新的theme背景为设置的闪屏图片  >>>>  SplashActivityTheme

3.修改AndroidManifest.xml,把闪屏StartPageActivity作为初始界面

<application

        android:allowBackup="true"

        android:icon="@mipmap/ic_launcher"

        android:label="@string/app_name"

        android:roundIcon="@mipmap/ic_launcher_round"

        android:supportsRtl="true"

        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">

        </activity>

        <activity

            android:name=".StartPageActivity"

            android:theme="@style/SplashActivityTheme">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

</application>

可以看到这个里面用的theme就是刚刚定义的

4.StartPageActivity

import com.example.qidongdemo2.R;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.Animation.AnimationListener;

import android.widget.ImageView;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.WindowManager;

import androidx.appcompat.app.AppCompatActivity;

public class StartPageActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

                WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏

        super.onCreate(savedInstanceState);

        Thread myThread = new Thread() {//创建子线程

            @Override

            public void run() {

                try {

                    sleep(5000);//使程序休眠一秒

                    Intent it = new Intent(getApplicationContext(), MainActivity.class);

                    startActivity(it);

                    finish();//关闭当前活动

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        };

        myThread.start();//启动线程

    }

}

修改AndroidManifest.xml,注册一个新的activity    InitAdvActivity

原文地址:https://www.cnblogs.com/hzcya1995/p/13309233.html