Activity切换动画,实现淡入淡出,滑入滑出

本篇文章为大家介绍关于自定义Activity的切换动画,分两种,一种是淡入淡出,另一种是滑入滑出,通过在Manifest中为Activity添加Theme实现,具体实现过程如下

首先在res文件夹下建立anim文件夹,然后在里面建立fade_in.xml和fade_out.xml两个动画资源

<?xml version="1.0" encoding="utf-8"?>  
<alpha xmlns:android="http://schemas.android.com/apk/res/android"  
    android:duration="500"  
    android:fromAlpha="0.0"  
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:toAlpha="1.0" />
<?xml version="1.0" encoding="utf-8"?>  
<alpha xmlns:android="http://schemas.android.com/apk/res/android"  
    android:duration="1000"  
    android:fromAlpha="1.0"  
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:toAlpha="0.0" /> 

如上所示,其中常见的interpolator有

  • LinearInterpolator:线性插值器,匀速运动;
  • AccelerateDecelerateInterpolator:加速减速插值器,动画两头慢中间快;
  • DecelerateInterpolator:减速插值器,动画越来越慢;

然后在values文件夹下的styles.xml中的resources标签内写:

<style name="Anim_fade" parent="android:Theme.NoTitleBar">  
       <item name="android:windowAnimationStyle">@style/fade</item>  
   </style>  
  
   <style name="fade" parent="@android:style/Animation.Activity">  
       <item name="android:activityOpenEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityOpenExitAnimation">@anim/fade_out</item>  
       <item name="android:activityCloseEnterAnimation">@anim/fade_in</item>  
       <item name="android:activityCloseExitAnimation">@anim/fade_out</item>  
   </style>

接下来在Mainfest中的activity中添加上android:theme="@style/Anim_fade"即可,上述定义的是淡入淡出效果,接下来介绍滑入滑出

anim文件夹新建slide_in_left、slide_out_rightslide_out_left、slide_in_right四个xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="500"
    android:fromXDelta="-100%"
    android:toXDelta="0"
    android:interpolator="@android:anim/accelerate_interpolator"
    />
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="500"
    android:fromXDelta="0"
    android:toXDelta="100%"
    android:interpolator="@android:anim/accelerate_interpolator"
    />
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="500"
    android:fromXDelta="0"
    android:toXDelta="-100%"
    android:interpolator="@android:anim/accelerate_interpolator"
    />
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="500"
    android:fromXDelta="100%"
    android:toXDelta="0"
    android:interpolator="@android:anim/accelerate_interpolator"
    />

然后在values文件夹下的styles.xml中的resources标签内写:

<style name="Anim_translate" parent="android:Theme.NoTitleBar">  
       <item name="android:windowAnimationStyle">@style/translate</item>  
   </style>
   
    <style name="translate" parent="@android:style/Animation.Activity">  
       <item name="android:activityOpenEnterAnimation">@anim/slide_in_left</item>  
       <item name="android:activityOpenExitAnimation">@anim/slide_out_right</item>  
       <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>  
       <item name="android:activityCloseExitAnimation">@anim/slide_out_left</item>  
   </style>
接着在Mainfest中的activity添加android:theme="@style/Anim_translate"就可以了,上面实现的是跳转Activity时左进右出,按back键返回上一层时右进左出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值