Android之带渐变动画的欢迎界面

转自:点击查看原文

这是一个简单的例子,主要功能是在欢迎界面是用一个渐变动画,当动画播放完成后,跳转到主界面中去。

首先需要在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;  
    }  

}  

希望以上内容对你有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值