美文网首页
Activity_动画效果的跳转

Activity_动画效果的跳转

作者: 难得糊涂与君勉 | 来源:发表于2017-03-01 11:30 被阅读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
    
    

    相关文章

      网友评论

          本文标题:Activity_动画效果的跳转

          本文链接:https://www.haomeiwen.com/subject/lbgxgttx.html