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
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

上一篇下一篇

猜你喜欢

热点阅读