18. Activity淡入淡出动画

2016-11-26  本文已影响1008人  Jsonzhang

本篇文章属于鸿洋大神博客学习笔记,鸿洋博客地址:http://blog.csdn.NET/lmj623565791/article/details/22990643

前言

多数情况下,我们新建的Android项目Activity之间的切换动画并不是我们想要的。这就需要我们自己来定义,今天我们就来学习一下,Activity间淡入淡出动画。

开始实现

首先在res目录下新建ainm文件夹,然后在里面建立两个动画资源:
fade_in.xml

<?xml version="1.0" encoding="utf-8"?>  
<alpha xmlns:android="http://schemas.android.com/apk/res/android"  
    android:duration="300"  
    android:fromAlpha="0.0"  
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:toAlpha="1.0" /> 

fade_out.xml

<?xml version="1.0" encoding="utf-8"?>  
<alpha xmlns:android="http://schemas.android.com/apk/res/android"  
    android:duration="300"  
    android:fromAlpha="1.0"  
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:toAlpha="0.0" /> 

然后在values文件夹下的style.xml中添加如下样式:

<style name="Anim_fade" parent="Theme.AppCompat.Light.NoActionBar">  
       <item name="android:windowAnimationStyle">@style/fade</item>  
</style>  
  
<style name="fade" parent="@android:style/Animation.Activity">  
       <item name="android:activityOpenEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityOpenExitAnimation">@anim/fade_out</item>  
       <item name="android:activityCloseEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityCloseExitAnimation">@anim/fade_out</item>  
</style>  

注意:Anim_fade的parent鸿洋大神写的是android:Theme.NoTitleBar,如果你用as,activity继承的是AppCompatActivity,那我们就必须用Theme.AppCompat之类的主题,否则报错。

最后在AndroidManifest.xml中,给activity设置你自己定义的样式:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.mrzhang.bb">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity"
            android:theme="@style/Anim_fade">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Main2Activity"
            android:theme="@style/Anim_fade"></activity>
    </application>

</manifest>

MainActivity代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = (Button)findViewById(R.id.button);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.this.startActivity(new Intent(MainActivity.this,Main2Activity.class));
            }
        });
    }
}

运行效果:

aa.gif
上一篇 下一篇

猜你喜欢

热点阅读