在日常开发中,我们可能会给每个活动界面切换时添加一个动画,那这种效果是如何实现的呢。
先看下效果图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P0tZH0om-1590824728383)(https://img-my.youkuaiyun.com/uploads/201512/05/1449292707_9892.gif)]
实例一 overridePendingTransition
概述
实现两个 Activity 切换时的动画。在overridePendingTransition
中使用
有两个参数:进入动画和出去的动画。
注意(调用时间)
1、必须在 StartActivity() 或 finish() 之后立即调用。
2、而且在 2.1 以上版本有效
3、手机设置-显示-动画,要开启状态
实现左进右出的效果
MainActivity
startActivity(new Intent(OverridePendingTransitionActivity.this,SecondActivity.class));
overridePendingTransition(R.anim.leftin, R.anim.leftout);
SecondActivity
@Override
public void onClick(View arg0) {
finish();
overridePendingTransition(R.anim.in, R.anim.out);
}
res/anim/leftin.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator" >
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="400" />
</set>
anim/leftout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" >
<translate
android:duration="400"
android:fromXDelta="0%p"
android:toXDelta="100%p"
/>
</set>
由于主题默认是黑色,所以在执行以上跳转动画时,会出现短暂的黑屏,这样的用户体验是很不好。解决办法就是主题文件中加下面该属性。使主题的窗口变成透明,这样就不会出现黑屏了。
/string/styles.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowIsTranslucent">true</item>
</style>
总结
此实例适用于为单独某个界面设置切换动画
实例二(主题切换动画)
定义切换动画的效果
<style name="Animation_Activity"
parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/right_in</item>
<item name="android:activityOpenExitAnimation">@anim/left_out</item>
<item name="android:activityCloseEnterAnimation">@anim/left_in</item>
<item name="android:activityCloseExitAnimation">@anim/right_out</item>
</style>
在主题中引用
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowNoTitle">true</item>
<itemname="android:windowAnimationStyle">@style/Animation_Activity
</item>
</style>
AndroidManifest.xml文件中Activity中引用主题
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme"
android:label="@string/app_name" />
然后每次启动的时候,默认的切换的动画就是你之前设置的动画效果
总结
此实例适用于全局的界面切换的效果
拓展
上面实例是左进右出的滑动的Activity跳转动画,显然还有更多的界面跳转的动画。
Android 界面跳转动画效果汇总