欢迎界面动画效果的简单实现

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Tong_Yan_20080304/article/details/51424362
欢迎界面(Splash)是应用呈现给用户的第一个界面,一般来讲,我们会给欢迎界面加上一个动画效果,从而给用户一个较好的第一印象。而欢迎界面通常不会放太多的view,一般只有一个背景(background),或者放一个广告,下面我们就来看一下欢迎界面的动画效果的简单实现。
    首先,新建一个android项目,在src包下新建一个android activity,我们给它取名叫SplashActivity,然后在AndroidManifest.xml文件(清单配置文件)将启动activity设置成SplashActivity。如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.musicplayer"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.musicplayer.view.MainActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name="com.example.musicplayer.view.SplashActivity"
            android:label="@string/title_activity_splash" >
            **<intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>**
        </activity>
    </application>

</manifest>
我们只需要将MainActivity(当然,在新建android项目时你可能改了MainActivity的名字)的<intent-filter></intent-filter>标签给移到SplashActivity名下即可。这样,启动Activity就变成了SplashActivity。然后,我们修改activity-splash.xml文件,给它加一个background,并且给它的根布局一个id。如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    **android:id="@+id/rl_splashactivity_container"**
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    **android:background="@drawable/splash"**
    tools:context=".SplashActivity" >

</RelativeLayout>
然后,我们可以新建一个补间动画的xml的set文件。即,在res目录下新建一个Android XML File,在Resource Type选择Tween Animation,在下面的Root Element选择set,并在File选项给它取名,然后点击finish。在这里,我给它取名叫做splash_animation_set_01。然后,在里面添加代码。如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 淡入淡出 -->
    <alpha
        android:duration="2000"
        android:fromAlpha="0"
        android:toAlpha="1" />

    <!-- 缩放 -->
    <scale
        android:duration="2000"
        android:fromXScale="0"
        android:fromYScale="0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1"
        android:toYScale="1" />

</set>
在这里,我只给它添加了一个淡入淡出效果和缩放效果,然后,我们回到SplashActivity.java文件,完成代码。
public class SplashActivity extends Activity {

    RelativeLayout animContainer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        initView();
        initAnim();
    }

    private void initView() {
        //这就是我们要给activity-splash的根布局添加id的原因
        //我们首先得到这个Relative布局
        animContainer = (RelativeLayout) findViewById(R.id.rl_splashactivity_container);
    }

    private void initAnim() {
        //然后,我们定义一个动画,这个动画就是我们自己写的那个动画了
        Animation anim = AnimationUtils.loadAnimation(this, R.anim.splash_animation_set_01);
        //将根布局RelativeLayout与动画进行绑定
        animContainer.setAnimation(anim);
        //由于我们给动画设置了2秒的时长,因此不能直接使用Intent来启动MainActivity,而是要给动画加上监听,在动画完成时在使用Intent。
        anim.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) {
                //动画完成,我们使用Intent来启动MainActivity,并且将SplashActivity给finish掉,这样我们在MainActivity点击back键就不会回到Splash界面了,因为我们只需要显示一次Splash界面。
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                SplashActivity.this.finish();
            }
        });
    }

}
这样,我们就完成了Splash界面的动画效果的简单实现,快去试一下吧!!!
展开阅读全文

没有更多推荐了,返回首页