• Android 编程下设置 Activity 切换动画


    为 Activity 设置切换动画

    我们知道,我们可以在 AndroidManifest.xml 文件中,通过 android:theme 属性设置 Activity 的主题。主题中定义了关于 Activity 外观的很多特性。同时,主题中还可以定义 Activity 的切换动画。这是应用 Activity 切换动画的一种方法。下面讲解一下如何通过主题来设置 Activity 间的切换动画。

    定义包含动画的 Activity 主题

    res/values/styles.xml,很简单,就是使用 windowAnimationStyle 这个属性,指定切换动画的style即可。

    <style name="AnimActivityTheme">
        <item name="android:windowAnimationStyle">@style/FeelyouWindowAnimTheme</item>
    </style>

    定义切换动画 style

    res/values/styles.xml

    <style name="FeelyouWindowAnimTheme" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/in_from_left</item>
        <item name="android:activityOpenExitAnimation">@anim/out_from_right</item>
        <item name="android:activityCloseEnterAnimation">@anim/in_from_right</item>
        <item name="android:activityCloseExitAnimation">@anim/out_from_left</item>
    </style>

    注意需要继承自 @android:style/Animation.Activity。具体这4个属性什么意思呢?假设我们有 2 个 Activity,分别是 A1 和 A2:

    • 当我们从 A1 启动 A2 时,A1 从屏幕上消失,这个动画叫做 android:activityOpenExitAnimation
    • 当我们从 A1 启动 A2 时,A2 出现在屏幕上,这个动画叫做 android:activityOpenEnterAnimation
    • 当我们从 A2 退出回到 A1 时,A2 从屏幕上消失,这个叫做 android:activityCloseExitAnimation
    • 当我们从 A2 退出回到 A1 时,A1 出现在屏幕上,这个叫做 android:activityCloseEnterAnimation

    结合上面我讲的情况,在脑海中想象一下,再结合属性的名字,就很容易理解了!

    定义具体动画文件

    这里的动画可以是透明度、位移、缩放之类的任何动画,我这里以位移来举例。当我们 A1 启动 A2 时,我希望 A1 从右边平移退出屏幕(out_from_right),A2 从左边平移进入屏幕(in_from_left)。当我们从 A2 退出回到 A1 时,我希望 A2 从左边平移退出屏幕(out_from_left),A1 从右边平移进入屏幕(in_from_right)

    下面我贴一下4个具体的动画的 xml 文件:

    anim/out_from_right.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    author:Remex Huang
    website:feelyou.info
    -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="100%p"
        android:toYDelta="0" >
    
    </translate>

    anim/in_from_left.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    author:Remex Huang
    website:feelyou.info
    -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="-100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" >
    
    </translate>

    anim/out_from_left.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    author:Remex Huang
    website:feelyou.info
    -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-100%p"
        android:toYDelta="0" >
    
    </translate>

    anim/in_from_right.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    author:Remex Huang
    website:feelyou.info
    -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:fromXDelta="100%p"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="0" >
    
    </translate>

    应用到对应 Activity

    AndroidMenifest.xml

    <activity
        android:name="info.feelyou.demo.A1"
        android:theme="@style/AnimActivityTheme" >
    </activity>
    <activity
        android:name="info.feelyou.demo.A2"
        android:theme="@style/AnimActivityTheme" >
    </activity>
  • 相关阅读:
    怎么样把网站logo(小图标)在地址栏里显示
    PHP 做群发短信(短信接口连接问题)
    网页JS弹出广告代码,头部,右下角,网页中漂浮,对联广告代码等大全
    PHP 时间戳与系统时间保持一致
    PHP 把数据表列出来的东西导出成execle格式
    数据库连接类 DB.class.php
    session判断页面是否已经登录的问题
    结合Smarty,生成HTML静态页
    PHP做文件下载功能
    滚动字幕,鼠标经过停留
  • 原文地址:https://www.cnblogs.com/sunzn/p/3854009.html
Copyright © 2020-2023  润新知