这是一个简单的例子,主要功能是在欢迎界面是用一个渐变动画,当动画播放完成后,跳转到主界面中去。
首先需要在res文件夹下新建一个anim文件夹,这个文件夹用来存放动画定义的xml文件,渐变动画的内容是:
<?xml version="1.0" encoding="UTF-8"?> <!-- alpha表示渐变动画 duration设置动画播放时长 fromAlpha表示动画开始时的透明度 toAlpha表示动画结束时的透明度 (0表示完全透明 1表示完全不透明) --> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fromAlpha="0.3" android:toAlpha="1.0" />
接着我们在欢迎界面里面去使用AnimationUtils加载刚刚定义的动画,然后播放动画、监听动画,
需要注意的是这里需要使用LayoutInflater这个类加载res资源下的布局xml文件,不能使用findViewById(),
详细请参考以下代码:
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import com.bear.notes.R; import com.bear.notes.utils.CommonUtil; public class SplashActivity extends Activity { private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); CommonUtil.setNoTitleBar(SplashActivity.this); CommonUtil.setFullScreen(SplashActivity.this); //使用LayoutInflater来加载activity_splash.xml视图 View rootView = LayoutInflater.from(this).inflate(R.layout.activity_splash, null); /** * 这里不能使用findViewById(R.layout.acitivyt_spash)方法来加载 * 因为还没有开始调用setContentView()方法,也就是说还没给当前的Activity * 设置视图,当前Activity Root View为null,findViewById()方法是从当前 * Activity的Root View中获取子视图,所以这时候会报NullPointerException异常 * * View rootView = findViewById(R.layout.activity_splash); * */ setContentView(rootView); mHandler = new Handler(); //初始化渐变动画 Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha); //设置动画监听器 animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationEnd(Animation animation) { //当监听到动画结束时,开始跳转到MainActivity中去 mHandler.post(new Runnable() { @Override public void run() { Intent i = new Intent(SplashActivity.this, MainActivity.class); startActivity(i); SplashActivity.this.finish(); } }); } }); //开始播放动画 rootView.startAnimation(animation); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.splash, menu); return true; } }
希望以上内容对你有所帮助。
时间: 2024-11-13 09:28:20