App的开启页(Splash Screen)是用户打开应用时的第一个界面,一般用于展示应用的logo和品牌形象等,同时也可以进行一些必要的操作,比如加载数据等。在用户等待启动的时候,开启页能够起到缓冲的作用,让用户感觉应用更为顺畅。
制作开启页的方法主要分为两种
1. 使用ImageView展示图片
可以在layout中添加一个ImageView,设置成全屏并将启动页需要展示的logo或图片赋到该ImageView中。同时在代码中添加一个Handler或CountDownTime计时器,来实现启动页延迟消失并跳转到应用的首页。具体代码如下
```
public class SplashActivity extends AppCompatActivity {
private ImageView mSplashView;
private int mTime = 5000;// 跳过倒计时提示5秒
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE,NO,TITLE);// 设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG,FULLSCREEN,
WindowManager.LayoutParams.FLAG,FULLSCREEN);
setContentView(R.layout.activity,splash);
mSplashView = findViewById(R.id.splash,view);
mSplashView.setImageResource(R.drawable.splash);// 加载图片资源
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
SplashActivity.this.finish();
}
}, mTime);
}
}
```
2. 使用Lottie动画展示启动页
与ImageView不同,Lottie动画可以实现更加丰富的展示效果,比如动态的加载过程、有趣的互动效果等。使用Lottie展示开启页的具体流程如下
- 添加Lottie库
在项目的build.gradle文件中添加Lottie库的依赖项。
```
dependencies {
implementation 'com.airbnb.安卓:lottie:3.4.0'
}
```
- 添加动画文件
在assets文件夹中添加需要展示的Lottie动画文件,比如animation.json。
- 在layout中使用LottieView
在layout文件中添加一个LottieView,用于展示动画。同时,能够依据实际需要对动画进行设置,比如设置循环播放、设置背景色、设置动画速度等。
```
安卓:id=@+id/animation,view
安卓:layout,width=match,parent
安卓:layout,height=match,parent
app:lottie,fileName=animation.json
app:lottie,loop=false
app:lottie,autoPlay=true
app:lottie,backgroundColor=@color/colorPrimary
app:lottie,speed=1/>
```
- 在代码中控制动画的播放
在SplashActivity中,根据动画播放的时间来控制页面的跳转。动态计算启动页的时间是需要留意的一点,需要确保开机时间少于SplashActivity展示的时间。同时,可以在页面跳转之前暂时停止动画的播放,以使启动页不会过早消失而导致应用的首页未能准备完毕。
```
public class SplashActivity extends AppCompatActivity {
private LottieAnimationView mAnimationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE,NO,TITLE);// 设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG,FULLSCREEN,
WindowManager.LayoutParams.FLAG,FULLSCREEN);
setContentView(R.layout.activity,splash);
mAnimationView = findViewById(R.id.animation,view);
mAnimationView.setAnimation(animation.json);
mAnimationView.loop(false);
mAnimationView.playAnimation();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mAnimationView.pauseAnimation();
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
SplashActivity.this.finish();
}
}, mAnimationView.getDuration());
}
}
```
以上就是制作App开启页的两种方法,开发者能够依据自己的需求,选择更为适合自己的实现方案。