0.先结论:4种方式
分别是:属性动画ObjectAnimator实现;补间动画Animation实现;定时器Timer实现;Handler+Thread实现;
下面分别以简单例子实现;
1.属性动画ObjectAnimator实现
首先是activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/launch_bg"
tools:context=".SplashActivity">
<ImageView
android:id="@+id/imageView_launch_icon"
android:layout_width="148dp"
android:layout_height="140dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/launch_icon_demo" />
</RelativeLayout>
其次是SplashActivity.java
package com.yh.splashactivitytest;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
public class SplashActivity extends AppCompatActivity {
private ImageView imageView_launch_icon;//启动界面上的小图标,期望它实现动画
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//初始化启动页面图标
imageView_launch_icon = findViewById(R.id.imageView_launch_icon);
//第一种实现启动页面的方案:使用ObjectAnimator
//第一个参数是动画对象,第二个是动画形式scaleX是缩放,第三第四是缩放变化范围
ObjectAnimator objectAnimator_launch_icon = ObjectAnimator.ofFloat
(imageView_launch_icon,"scaleX",0.5f,1.0f);
objectAnimator_launch_icon.setDuration(3000);//设置动画时长3秒
objectAnimator_launch_icon.start();//启动动画
//设置监听器以使得动画结束后界面跳转
objectAnimator_launch_icon.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);//页面跳转
SplashActivity.this.finish();//关闭当前界面
}
});
}
}
2.补间动画实现
activity_splash.xml不变
SplashActivity.java中部分代码改为:
/*
第二种实现启动页面的方案:使用补间动画Animation
*/
//平移动画的四个参数分别是起始x坐标,结束x坐标,起始y坐标,结束y坐标
Animation translateAnimation_launch_icon = new TranslateAnimation
(-250,250,
0,0);
translateAnimation_launch_icon.setDuration(3000);//设置动画时长3秒
imageView_launch_icon.startAnimation(translateAnimation_launch_icon);//开启动画
translateAnimation_launch_icon.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);
SplashActivity.this.finish();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
3.定时器Timer实现
修改部分为:
/*
第三种实现启动页面的方案:使用Timer定时器
*/
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity(intent);
SplashActivity.this.finish();
}
};
timer.schedule(timerTask,3000);
4.定时器Handler Thread实现
暂时不会