Activity进场和出场动画总结及Android 应用的整体的进出场动画处理及Interpolator使用方法

从FirstActivity进入到SecondActivity,再点击返回键从SecondActivity进入到FirstActivity这样一个过程中如何设置两个Activity创建和销毁的动画呢?

第一步:在FirstActivity设置Intent进入SecondActivity的代码:

Intent intent = new Intent(this, SecondActivity.class);

startActivity(intent);

// 参数1:SecondActivity进场动画,参数2:FirstActivity出场动画

overridePendingTransition(R.anim.push_right_in, 0);

这时候FirstActivity出场没有动画,SecondActivity进场动画是push_right_in

 

 

第二步:SecondActivity退出时       finish();

// 参数1:FirstActivity进场动画,参数2:SecondActivity出场动画

overridePendingTransition(0, R.anim.left_out);

这时候FirstActivity进场没有动画,SecondActivity出场动画是push_left_out;

 

第三步:两个Activity设置Theme,style中要添加如下配置

<!-- 第二个页面进入时第一个页面不会出现黑屏 -->
<item name="android:windowIsTranslucent">true</item>

 

下面是 Android 应用的整体的进出场动画处理()alpha)

 

 

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="500"

        android:fromXDelta="100%"

        android:toXDelta="0%" />

 

    <alpha

        android:duration="500"

        android:fromAlpha="0.0"

        android:toAlpha="1.0" />

</set>

 

 

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="500"

        android:fromXDelta="0%"

        android:toXDelta="100%" />

 

    <alpha

        android:duration="500"

        android:fromAlpha="1.0"

        android:toAlpha="0.0" />

</set>

 

 

push_left_in.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="500"

        android:fromXDelta="-100%"

        android:toXDelta="0%" />

 

    <alpha

        android:duration="500"

        android:fromAlpha="0.0"

        android:toAlpha="1.0" />

 

</set>

 

push_left_out.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate

        android:duration="500"

        android:fromXDelta="0%"

        android:toXDelta="-100%" />

 

    <alpha

        android:duration="500"

        android:fromAlpha="1.0"

        android:toAlpha="0.0" />

 

</set>

styles.xml(这里是关键,注意;下面的样式,四个anim都不一样!!!)

 

[html] view plain copy

  1. <!-- animation 样式 -->  
  2.    <style name="activityAnimation" parent="@android:style/Animation">  
  3.        <item name="android:activityOpenEnterAnimation">@anim/push_right_in</item>  
  4.        <item name="android:activityOpenExitAnimation">@anim/push_left_out</item>  
  5.        <item name="android:activityCloseEnterAnimation">@anim/push_left_in</item>  
  6.        <item name="android:activityCloseExitAnimation">@anim/push_right_out</item>  
  7.    </style>  


主题:

 

[html] view plain copy

  1. <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">  
  2.        <item name="android:windowNoTitle">true</item>  
  3.        <item name="android:textColorSecondary">@color/common_text</item>  
  4.        <item name="android:windowAnimationStyle">@style/activityAnimation</item>  
  5.        <item name="android:windowBackground">@color/select_btn_color</item>  
  6.    </style>  

 

 清单文件中,实现该主题即可:

 

[html] view plain copy

  1. <application  
  2.        android:name=".app.BaseApplication"  
  3.        android:icon="@drawable/ic_launcher"  
  4.        android:label="@string/app_name"  
  5.        android:persistent="true"  
  6.        android:supportsRtl="true"  
  7.        android:theme="@style/AppTheme">  

 

  需要的朋友可以试一下,很好用,必须实现这四个anim 不然效果看上去很low,市面上很多人就只写了两个anim 误导大家,而且效果不好看! 

 

Interpolator的具体使用方法

 

Interpolator定义了动画变化的速率,在Animations框架当中定义了一下几种Interpolator

1.AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候速率快。

2.AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速

3.CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线

4.DecelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始减速

5.LinearInterpolator:动画以均匀的速率改变

备注:

1、在set标签中:

  1. <set xmlns:android="http://schemas.android.com/apk/res/android"

  2. android:interpolator="@android:anim/accelerate_interpolator"/>

 

 

2、如果在一个set标签中包含多个动画效果,如果想让这些动画效果共享一个Interpolator。

android:shareInterpolator="true"

 

 

3、如果不想共享一个interpolator,则设置android:shareInterpolator="false",并且需要在每一个动画效果处添加interpolator。

 

  1. <alpha

  2. android:interpolator="@android:anim/accelerate_decelerate_interpolator"

  3. android:fromAlpha="1.0"

  4. android:toAlpha="0.0"

  5. android:startOffset="500"

  6. android:duration="500"/>

interpolator的参考:https://blog.csdn.net/lyx4228716/article/details/50971996

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值