Android(安卓)Activity切换动画效果详解(附源代码)
Android 开发过程中,相信大部分都会使用到界面切换,而Android本身的界面切换会显得很生硬,今天就带大家一起来看一看Android提供给我们的那些动画效果,以及如何在XML使用这些效果。
在Android的XML动画中主要有:
translate:移动(左进右出等)
alpha:淡入淡出
scale:缩放
rotate:旋转
1.translate:
<translate android:duration="400" android:fromXDelta="100%p" android:toXDelta="0" />
duration:表示持续的时间
fromXDelta:表示X轴起始delta值 (待会给出如何计算delta值)
toXDelta:表示X轴结束的delta值
如何计算delta值:Android 屏幕的坐标轴是以左上角为原点的,向右X为正值,向下Y为正值,如图所示
同理对于Y轴,在屏幕下方delta值为正,屏幕上方delta值为负
2.alpha
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" />
fromAlpha:起始透明度 ,0表示透明,1表示不透明
toAlpha:结束时的透明度
duration:持续变化时间
3.scale
<scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="0" android:duration="400" android:repeatCount="1" android:repeatMode="restart" />
fromXScale:起始的X轴缩放程度,0表示没有
toXScale:结束的X轴缩放程度
fromYScale:起始的Y轴缩放程度
toYScale:结束的Y轴缩放程度
pivotX:缩放起始的X轴相对位置 50%表示在屏幕中间
pivotY:缩放的起始Y轴相对位置
startOffset:动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间
repeatCount:重复次数
repeatMode:repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。 restart为重新执行,方向不变
4.rotate
<rotate android:duration="400" android:fromDegrees="-180" android:toDegrees="180" android:pivotX="50%" android:pivotY="50%" />
fromDegrees:起始的角度 0表示正常
toDegrees:结束时的角度
好了,动画的属性介绍完了,现在教大家如何使用
1.首先在res下创建anim文件夹,用来存放自定义的动画效果
创建4个xml文件
in_from_left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100%表示在屏幕右边,-100%表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="-100%p" android:toYDelta="0%p" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" /></set>
in_from_left_in.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="400" /></set>
out_to_left.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="0%p" android:toYDelta="-100%p" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="400" /></set>
out_to_right.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" > <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边--> <translate android:duration="400" android:fromYDelta="0%p" android:toYDelta="100%p" /> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="400" /></set>
2.在style文件中做如下操作
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> <!-- Customize your theme here. --> <!--注意在主题里引用动画效果--> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> </style> <style name="AnimationActivity" parent="@android:style/Animation.Activity"> <!--打开一个activity,新的activity从进入动画--> <item name="android:activityOpenEnterAnimation">@anim/in_from_right</item> <!--打开一个activity,原来activity退出的动画--> <item name="android:activityOpenExitAnimation">@anim/out_to_left</item> <!--关闭一个activity(包括返回键),上一级activity进入的动画--> <item name="android:activityCloseEnterAnimation">@anim/in_from_left</item> <!--关闭一个activity,关闭的activity退出的动画--> <item name="android:activityCloseExitAnimation">@anim/out_to_right</item> </style></resources>
3.在AndroidManifest.xml中的Application中将以上的主题引用
这样你再进行activity跳转就会有新的动画效果了。
是不是发现动画其实也是这么简单!
代码是用Android Studio写的,如果你使用的是Eclipse,只要把关键代码拷贝到Eclipse相应位置就行了
跳转动画DEMO
更多相关文章
- Android(安卓)屏幕分辩率相关问题
- android animation
- TextView跑马灯的几点问题:持续动画 和 与EditText争抢焦点的问题
- Android动画详细探究
- Android(安卓)多个Fragment切换动画
- Android:Layout_weight属性解析
- ( 转)关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
- Android开关机动画/铃音是如何播放的?
- android动画