您的位置:首页 > 其它

Activity之间动画的切换

2016-02-08 18:35 239 查看
Activity之间的动画需要使用Tween动画来实现.主要的实现方法是在对2个Activity进行切换的时候,紧跟一个overridePendingTransition方法,这个方法必须紧跟在startActivity()方法或者finish()方法之后,这个是API文档中所述.

举例如下 :

Intent intent = new Intent(MainActivity.this, SecondActivity.class);  //MainActivity 为第一个Activity名,SecondActivity为第二个的名字;
startActivity(intent);
overridePendingTransition(这里写anim的资源ID, 这里写anim的资源ID);//anim的资源一般防止在res/anim 文件目录下.引用使用R.anim.XXX语句;





我在网上搜索到了一些有用的资源,在这里分享一下,是关于XML的一套动画实现的,里面有对xml动画中的一些属性进行讲解,方便更好的理解书写过程. 这是网址: http://download.csdn.net/detail/iloveyoueveryday/6909031

这里是贡献值(原博主)的博客: /article/2352006.html
这里是对Tween动画的一些介绍,如果看了XML文件的话,有些属性不明白,这里面都有介绍.

http://blog.csdn.net/feng88724/article/details/6318430.
接下来介绍我写的Demo.

我在Demo中使用Spinner来对多个动画的名称进行匹配.

这是Spinner的所需要的字符串数组.把这段话复制到res/values/strings.xml文件下即可

<string-array name="AnimationName">
        <item >淡入淡出</item>
        <item>缩小淡入淡出</item>
        <item>放大淡入淡出</item>
        <item>放大切入切出</item>
        <item>缩小切入切出</item>
        <item>上滑切入切出</item>
        <item>下滑切入切出</item>
        <item>左滑切入切出</item>
        <item>右滑切入切出</item>
        <item>旋转飞入飞出</item>
    </string-array>
然后需要在layout文件中来指定spinner控件的entries属性,该属性名即为 上方代码中的 AnimationName .

我在主界面放置了一个Button和Spinner.当点击button的时候,通过Spinner对象的getSelectId()方法来获取点击的item号,注意这是从0开始且返回值为long.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".SecondActivity">
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/AnimationName"
        android:spinnerMode="dialog"
        />
<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click"/>
</LinearLayout><span style="color:#ff0000;font-weight: bold;">
</span>
然后在主Activity中获取Button并设置点击事件.

button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                selectId = (int) spinner.getSelectedItemId();
//              overridePendingTransition(android.R.anim.slide_out_right, android.R.anim.slide_in_left); //android本身也提供相关动画.
                if (selectId < AnimationInIds.length && selectId > -1) {
                    setAnimation(selectId);
                } else {
                    showTip();
                }
                startActivity(intent);
                overridePendingTransition(AnimationInId, AnimationOutId);
        }



//下面这一种方法也可以,这是将当前想要做的动作加入消息队列中,但有1000ms的延迟.
new Handler().postDelayed(new Runnable() {
           @Override
            public void run() {
                Intent intent = new Intent(MainActivity.this,SecondActivity.class);
                startActivity(intent);
                finish();
                overridePendingTransition(资源ID, 资源ID);
            }
       },1000);


这是项目的github地址 : https://github.com/JavaSuperior/AnimationBetweenActivities .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: