Android Activity 切换动画效果
2015-01-15 09:59
471 查看
Android Activity 间的切换动画
目前有两种方式实现,一是完全使用xml配置文件;二是使用overridependingtransition。
一、使用xml配置文件(推荐)
通过设置 theme 中的 windowAnimationStyle 实现
AndroidManifest.xml 文件
res / values / style.xml 文件
动画文件(右进右出)
res / anim / a_back_b_of_in.xml
res / anim / a_back_b_of_out.xml
res / anim / a_to_b_of_in.xml
res / anim / a_to_b_of_out.xml
嗯,还有什么要说
1. 不同的activity页面如果需要使用不同的动画效果,可以设置不同的主题,加载不同的动画文件;
2. android的动画效果大概有4中,平移、旋转、缩放、渐变,这4个都可以用在activity切换效果;
3. 没有了。
二、使用 overridePendingTransition 实现
动画文件跟上面的是一样的。
显然,使用第二种方式,必须每个activity页面都写上跳转动画代码,如果不是必要,还是使用第一种方式比较方便。
第一种方式和第二种方式可以同时使用。但会覆盖效果,优先级如下:
overridePendingTransition > activity.theme > application.theme
三、切换效果
android 本身提供了部分动画效果,不过我好像只看到两个?!
当然,我们用得最多的还是自定义的动画效果,比如
上面的动画文件效果为右进右出。
这种只有平移效果的比较单一,我们还可以混合多个动画,达到其它效果
以上。
目前有两种方式实现,一是完全使用xml配置文件;二是使用overridependingtransition。
一、使用xml配置文件(推荐)
通过设置 theme 中的 windowAnimationStyle 实现
AndroidManifest.xml 文件
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" <!-- 修改默认主题 --> android:theme="@style/AppTheme" > <!-- 其它activity页面 --> .... <!-- 使用其它动画的页面 --> <activity android:name="com.lxmy.demo.testActivity" android:theme="@style/testTheme" > </activity> </application>
res / values / style.xml 文件
<!-- 默认主题 --> <style name="AppTheme" parent="AppBaseTheme"> <item name="android:windowBackground">@color/white</item> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style> <!-- test主题 --> <style name="testTheme" parent="AppBaseTheme"> <item name="android:windowBackground">@color/white</item> <item name="android:windowAnimationStyle">@style/testAnimation</item> </style> <!-- 默认动画 --> <style name="AnimationActivity" parent="@android:style/Theme"> <item name="android:activityOpenEnterAnimation">@anim/a_to_b_of_in</item> <item name="android:activityOpenExitAnimation">@anim/a_to_b_of_out</item> <item name="android:activityCloseEnterAnimation">@anim/a_back_b_of_in</item> <item name="android:activityCloseExitAnimation">@anim/a_back_b_of_out</item> </style> <!-- test动画 --> <style name="testAnimation" parent="@android:style/Theme"> <item name="android:activityOpenEnterAnimation">@anim/test_a_to_b_of_in</item> <item name="android:activityOpenExitAnimation">@anim/test_a_to_b_of_out</item> <item name="android:activityCloseEnterAnimation">@anim/test_a_back_b_of_in</item> <item name="android:activityCloseExitAnimation">@anim/test_a_back_b_of_out</item> </style>
动画文件(右进右出)
res / anim / a_back_b_of_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="308" android:fromXDelta="-100.0%p" android:toXDelta="0.0" /> </set>
res / anim / a_back_b_of_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="308" android:fromXDelta="0.0" android:toXDelta="100.0%p" /> </set>
res / anim / a_to_b_of_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="308" android:fromXDelta="100.0%p" android:startOffset="10" android:toXDelta="0.0" /> </set>
res / anim / a_to_b_of_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="308" android:fromXDelta="0.0" android:startOffset="50" android:toXDelta="-100.0%p" /> </set>
嗯,还有什么要说
1. 不同的activity页面如果需要使用不同的动画效果,可以设置不同的主题,加载不同的动画文件;
2. android的动画效果大概有4中,平移、旋转、缩放、渐变,这4个都可以用在activity切换效果;
3. 没有了。
二、使用 overridePendingTransition 实现
/** * 跳转到该页面 * @param context */ public static void startAction(Context context) { Intent intent = new Intent(context, TestActivity.class); context.startActivity(intent); ((Activity) context).overridePendingTransition(R.anim.a_to_b_of_in, R.anim.a_to_b_of_out); } @Override public void onBackPressed() { finish(); overridePendingTransition(R.anim.a_back_b_of_in, R.anim.a_back_b_of_out); super.onBackPressed(); }
动画文件跟上面的是一样的。
显然,使用第二种方式,必须每个activity页面都写上跳转动画代码,如果不是必要,还是使用第一种方式比较方便。
第一种方式和第二种方式可以同时使用。但会覆盖效果,优先级如下:
overridePendingTransition > activity.theme > application.theme
三、切换效果
android 本身提供了部分动画效果,不过我好像只看到两个?!
android.R.anim.slide_in_left, android.R.anim.slide_out_right android.R.anim.fade_in, android.R.anim.fade_out
当然,我们用得最多的还是自定义的动画效果,比如
上面的动画文件效果为右进右出。
这种只有平移效果的比较单一,我们还可以混合多个动画,达到其它效果
以上。
相关文章推荐
- [Android1.5]Android2.0版本以下Activity切换动画效果
- android中2个activity之间的切换动画效果(共12种)
- [Android1.5]Android2.0版本以下Activity切换动画效果
- android Activity切换动画效果
- [Android1.5]Android2.0版本以下Activity切换动画效果
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- 【Android】Activity切换动画效果
- android使用activity切换动画效果
- Android 动画之View动画效果和Activity切换动画效果
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- Android提高 - Activity切换动画效果xml
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- Android的Activity屏幕切换动画(ExitAnim)-左右滑动切换(直播退出效果)
- android中设置activity切换时候的动画效果
- Android2.0版本以下Activity切换动画效果
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
- Android 之Activity切换动画效果