本篇文章属于鸿洋大神博客学习笔记,鸿洋博客地址: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));
}
});
}
}
运行效果: