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中要添加如下配置


true

 

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

 

 

push_right_in.xml

"1.0" encoding="utf-8"?>

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

   

        android:duration="500"

        android:fromXDelta="100%"

        android:toXDelta="0%" />

 

   

        android:duration="500"

        android:fromAlpha="0.0"

        android:toAlpha="1.0" />

 

 

push_right_out.xml

"1.0" encoding="utf-8"?>

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

    

        android:duration="500"

        android:fromXDelta="0%"

        android:toXDelta="100%" />

 

    

        android:duration="500"

        android:fromAlpha="1.0"

        android:toAlpha="0.0" />

 

 

push_left_in.xml

"1.0" encoding="utf-8"?>

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

   

        android:duration="500"

        android:fromXDelta="-100%"

        android:toXDelta="0%" />

 

    

        android:duration="500"

        android:fromAlpha="0.0"

        android:toAlpha="1.0" />

 

 

push_left_out.xml

"1.0" encoding="utf-8"?>

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

    

        android:duration="500"

        android:fromXDelta="0%"

        android:toXDelta="-100%" />

 

    

        android:duration="500"

        android:fromAlpha="1.0"

        android:toAlpha="0.0" />

 

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

 

[html] view plain copy

  1.   
  2.    <style name="activityAnimation" parent="@android:style/Animation">  
  3.        <item name="android:activityOpenEnterAnimation">@anim/push_right_initem>  
  4.        <item name="android:activityOpenExitAnimation">@anim/push_left_outitem>  
  5.        <item name="android:activityCloseEnterAnimation">@anim/push_left_initem>  
  6.        <item name="android:activityCloseExitAnimation">@anim/push_right_outitem>  
  7.    style>  


主题:

 

[html] view plain copy

  1. <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">  
  2.        <item name="android:windowNoTitle">trueitem>  
  3.        <item name="android:textColorSecondary">@color/common_textitem>  
  4.        <item name="android:windowAnimationStyle">@style/activityAnimationitem>  
  5.        <item name="android:windowBackground">@color/select_btn_coloritem>  
  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. android:interpolator="@android:anim/accelerate_interpolator"/>

 

 

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

android:shareInterpolator="true"

 

 

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

 

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

  2. android:fromAlpha="1.0"

  3. android:toAlpha="0.0"

  4. android:startOffset="500"

  5. android:duration="500"/>

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

你可能感兴趣的:(Android动画)