Android Activity切换动画效果详解(附源代码)

本文深入探讨Android中界面切换的动画效果,包括translate、alpha、scale和rotate四种动画类型,并详细解释各属性参数及使用方法。通过创建自定义动画效果和在AndroidManifest.xml中引用主题,实现流畅的界面跳转动画。
摘要由CSDN通过智能技术生成

        Android 开发过程中,相信大部分都会使用到界面切换,而Android本身的界面切换会显得很生硬,今天就带大家一起来看一看Android提供给我们的那些动画效果,以及如何在XML使用这些效果。


      在Android的XML动画中主要有:

      translate:移动(左进右出等)

      alpha:淡入淡出

      scale:缩放

      rotate:旋转


1.translate:

<translate
        android:duration="400"              
        android:fromXDelta="100%p"
        android:toXDelta="0" />


duration:表示持续的时间

fromXDelta:表示X轴起始delta值  (待会给出如何计算delta值)

toXDelta:表示X轴结束的delta值

如何计算delta值:Android 屏幕的坐标轴是以左上角为原点的,向右X为正值,向下Y为正值,如图所示

同理对于Y轴,在屏幕下方delta值为正,屏幕上方delta值为负


2.alpha

<alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="400"
        />


fromAlpha:起始透明度 ,0表示透明,1表示不透明

toAlpha:结束时的透明度

duration:持续变化时间


3.scale

 

    <scale
         android:fromXScale="0.0"
         android:toXScale="1.0"
         android:fromYScale="0.0"
         android:toYScale="1.0"
         android:pivotX="50%"
         android:pivotY="50%"
         android:startOffset="0"
         android:duration="400"
         android:repeatCount="1"
         android:repeatMode="restart"
         />

fromXScale:起始的X轴缩放程度,0表示没有

toXScale:结束的X轴缩放程度

fromYScale:起始的Y轴缩放程度

toYScale:结束的Y轴缩放程度

pivotX:缩放起始的X轴相对位置  50%表示在屏幕中间

pivotY:缩放的起始Y轴相对位置

startOffset:动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间

repeatCount:重复次数

repeatMode:repeatMode,动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。 restart为重新执行,方向不变


4.rotate

<rotate android:duration="400"
        android:fromDegrees="-180"
        android:toDegrees="180"
        android:pivotX="50%"
        android:pivotY="50%"
        />


fromDegrees:起始的角度 0表示正常

toDegrees:结束时的角度


好了,动画的属性介绍完了,现在教大家如何使用

1.首先在res下创建anim文件夹,用来存放自定义的动画效果

创建4个xml文件

in_from_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator" >

    <!--0的时候表示占满屏幕,100%表示在屏幕右边,-100%表示在屏幕左边-->
    <translate
        android:duration="400"
        android:fromYDelta="-100%p"
        android:toYDelta="0%p" />

    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="400"
        />

</set>

in_from_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator" >


    <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边-->
    <translate
        android:duration="400"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:duration="400"
        />
</set>

out_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator" >

    <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边-->
    <translate
        android:duration="400"
        android:fromYDelta="0%p"
        android:toYDelta="-100%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="400"
        />
</set>

out_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator" >

    <!--0的时候表示占满屏幕,100表示在屏幕右边,-100表示在屏幕左边-->
    <translate
        android:duration="400"
        android:fromYDelta="0%p"
        android:toYDelta="100%p" />
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:duration="400"
        />
</set>


2.在style文件中做如下操作

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <!--注意在主题里引用动画效果-->
        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>
    </style>

    <style name="AnimationActivity" parent="@android:style/Animation.Activity">

        <!--打开一个activity,新的activity从进入动画-->
        <item name="android:activityOpenEnterAnimation">@anim/in_from_right</item>
        <!--打开一个activity,原来activity退出的动画-->
        <item name="android:activityOpenExitAnimation">@anim/out_to_left</item>
        <!--关闭一个activity(包括返回键),上一级activity进入的动画-->
        <item name="android:activityCloseEnterAnimation">@anim/in_from_left</item>
        <!--关闭一个activity,关闭的activity退出的动画-->
        <item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
    </style>
</resources>

3.在AndroidManifest.xml中的Application中将以上的主题引用




这样你再进行activity跳转就会有新的动画效果了。

是不是发现动画其实也是这么简单!

代码是用Android Studio写的,如果你使用的是Eclipse,只要把关键代码拷贝到Eclipse相应位置就行了

跳转动画DEMO


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值