复杂动画设计系列文章
复杂动画设计-Android动画分类介绍了android中最常见的动画场景,本文做为补充,对Android中的'动效'做进一步梳理.
1. 根据使用场景,Android中的'动效'
- View动画
- 帧动画
- 属性动画
2. View动画
- View动画使用场景在之前文章有介绍,这里详细介绍如何使用View动画设置'Activity的切换效果'
- 使用View动画设置'Activity的切换效果'有2种方式
- 使用overridePendingTransition
- 使用style
- 使用overridePendingTransition
anim_activity_change_over_curr_enter: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="-100%" android:toXDelta="0" android:toYDelta="0" /> </set> anim_activity_change_over_curr_exit: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="1.0" android:toAlpha="0.0" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="100%" /> </set>jump(OverridePendingTransitionSecondActivity.class); overridePendingTransition(R.anim.anim_activity_change_over_curr_enter,R.anim.anim_activity_change_over_curr_exit); - 使用style
- 首先在res/values/styles.xml中创建style,定义Activity切换时候对应的4个动画效果
- activityOpenEnterAnimation 打开一个新的 Activity 时,要显示的新的 Activit 执行的动画
- activityOpenExitAnimation 打开一个新的 Activity 时,当前的旧的 Activit 执行的动画
- activityCloseEnterAnimation 关闭一个 activity 时,要显示的上一个 Activity 执行的动画
- activityCloseExitAnimation 关闭一个 activity 时,被关闭的 Activity 执行的动画
<style name="ActivityChangeAnim"> <item name="android:activityOpenEnterAnimation">@anim/anim_activity_open_enter</item> <item name="android:activityOpenExitAnimation">@anim/anim_activity_open_exit</item> <item name="android:activityCloseEnterAnimation">@anim/anim_activity_close_enter</item> <item name="android:activityCloseExitAnimation">@anim/anim_activity_close_exit</item> </style> anim_activity_open_enter: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="-100%" android:toXDelta="0" android:toYDelta="0" /> </set> anim_activity_open_exit: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="1.0" android:toAlpha="0.0" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="100%" /> </set> anim_activity_close_enter: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <translate android:duration="2000" android:fromXDelta="-100%" android:fromYDelta="0" android:toXDelta="0" android:toYDelta="0" /> </set> anim_activity_close_exit: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha android:duration="2000" android:fromAlpha="0.0" android:toAlpha="1.0" /> <translate android:duration="2000" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="100%" android:toYDelta="0" /> </set> - 在Application或Activity要使用的theme中,通过android:windowAnimationStyle引用刚刚创建的style
<style name="StyleActivityChangeTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="android:windowAnimationStyle">@style/ActivityChangeAnim</item> </style> - 在AndroidManifest.xml中应用这个theme,可以只在特定的Activity引用.
<activity android:name=".activity.animation.activitychange.UseStyleThemeSecondActivity" android:theme="@style/StyleActivityChangeTheme" /> <activity android:name=".activity.animation.activitychange.UseStyleThemeFirstActivity" android:theme="@style/StyleActivityChangeTheme" />
- 首先在res/values/styles.xml中创建style,定义Activity切换时候对应的4个动画效果
3. 属性动画
- android.animation(7) - android:animateLayoutChanges属性和LayoutTransition
- LayoutTransition布局动画简单使用
- Android Animation完全总结(三)Animator与LayoutTransition
- LayoutTransiton实现简单的录制按钮 LayoutTransition