Activity_动画效果的跳转
2017-03-01 本文已影响133人
难得糊涂与君勉
- 介绍
其实Activity在跳转Activity的时候是可以带有动画效果的。
- 使用系统的动画
其实Android系统已经提供了四种动画,分别是:fade_in、fade_out、slide_in_left、slide_out_right、
先看看具体的代码
fade_in:(android.R.anim.fade_in)
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@interpolator/decelerate_quad"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_longAnimTime" />
代码解释:android:interpolator: 插值器,这个值,实际是DecelerateInterpolator:减速插值器,动画越来越慢
duration:所需的时间,这里用的是500ms
fade_out:(android.R.anim.fade_out)
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@interpolator/accelerate_quad"
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime"
/>
代码解释:这里的插值器实际用的是AccelerateDecelerateInterpolator:加速减速插值器,动画两头慢中间快
时间是500ms
slide_in_left:(android.R.anim.slide_in_left)
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-50%p" android:toXDelta="0"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
完成的时间是:400ms
slide_out_right:(android.R.anim.slide_out_right)
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="50%p"
android:duration="@android:integer/config_mediumAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="@android:integer/config_mediumAnimTime" />
</set>
时间也是400ms
- 如何去使用
在startActivity()和finish()方法之后,调用如下方法:
this.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
这个方法里面有两个参数,参数一表示是要进入的Activity的动画,参数二表示是要出去的Activity的动画
另外,注意的是,可以调用好几个overridePendingTransition方法,效果会实现。
- 使用自定义的动画
我们还可以自己自定义动画,来给当前Actiivty去使用。
在res目录下建立 anim文件夹,然后建立动画XML
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top"
>
<scale android:fromXScale="1.0" android:toXScale=".5"
android:fromYScale="1.0" android:toYScale=".5"
android:pivotX="50%p" android:pivotY="50%p"
android:duration="@android:integer/config_mediumAnimTime" />
<alpha android:fromAlpha="1.0" android:toAlpha="0"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
建议还是用系统的时间,config_mediumAnimTIme,可能用户体验好点,
另外,android:zAdjustment = "top" 是为了强制让我们执行动画的activity放在最上层。
在使用的时候也是套用那个方法就可以了
- 注意事项
1、android系统版本2.0以下,这个没办法,想其他办法解决切换动画吧。
2、在ActivityGroup等的嵌入式Activity中,这个比较容易解决,用如下方法就可以了:
this.getParent().overridePendingTransition 就可以解决。
3、在一个Activity的内部类中,或者匿名类中,这时候只好用handler来解决了。
4、手机的显示动画效果被人为或者其他方式给关闭了 现在打开即可 设置->显示->显示动画效果
此方法参考: http://www.cnblogs.com/bavariama/p/3368515.html
5 推荐一篇文章,参考一下
https://blog.csdn.net/gf771115/article/details/49424899