今天主要做的是启动页的再一次优化,昨天的效果在启动时会有一个白屏的效果出来,这并不我预想的
今天已经解决了这个问题,并且再闪屏后加了一个可以手动跳过的倒计时动画。
解决方法,在上一篇冲刺的博客中闪屏动画用的是在一个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