Android中Activity的切换动画(非overridePendingTransition)

2024-05-31 02:32

本文主要是介绍Android中Activity的切换动画(非overridePendingTransition),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘自:http://fuyunhe.iteye.com/blog/1834874


我们知道,在Manifest文件中声明Activity时,可以通过android:theme属性设置Activity的主题。主题中定义了关于Activity外观的很多特性。同时,主题中还可以定义Activity的切换动画。通过主题的形式定义的Activity切换动画,甚至可以超越API的限制,在2.0以下的系统版本中依然能够设置Activity切换动画。

 

        下面就一个简单的例子说明怎么定义包含Activity切换动画的主题。

         首先,我们先看一下包含动画的主题是怎么定义的。在R.values文件夹中新建一个style.xml的文件,在其中插入一个<style />节点,声明一个主题,代码如下:

R.values.style:

Xml代码  收藏代码

  1. <style name="Activity.Theme" mce_bogus="1" parent="@android :style/Theme.NoTitleBar">  

  2.     <item name="android:windowAnimationStyle">@style/anim_activity</item>  

  3. </style>  

 可以看到,以上主题的父主题是@android :style/Theme.NoTitleBar, 就是继承自系统主题的大部分属性。

其中有一个"android:windowAnimationStyle"属性是由我们自定义的,定位的位置同样在R.values.style文件中。代码如下:

Xml代码  收藏代码

  1. <style name="anim_activity" mce_bogus="1" parent="@android :style/Animation.Activity">  

  2.     <item name="android:activityOpenEnterAnimation">@anim/activity_open_in_anim</item>  

  3.     <item name="android:activityOpenExitAnimation">@anim/activity_open_out_anim</item>  

  4.     <item name="android:activityCloseEnterAnimation">@anim/activity_close_in_anim</item>  

  5.     <item name="android:activityCloseExitAnimation">@anim/activity_close_out_anim</item>  

  6. </style>  

 现在假设有两个Activity, A 和 B。 在A中可以启动B. 同时,A,B的theme属性均设置为上面定义的属性。那么,以上动画的发生时机如下:

(1)当A启动B时,A退出,B进入,A退出时的动画名称为android:activityOpenExitAnimation,动画文件为

R.anim.activity_open_out_anim. B进入时的动画名称为android:activityOpenEnterAnimation, 动画文件为R.anim.activity_open_in_anim.

(2)当B结束时,B退出,A进入。B退出的动画名称为android:activityCloseExitAnimation, 动画文件为R.anim.activity_close_out_anim. A进入时的动画名称为android:activityCloseEnterAnimation, 动画文件为R.anim.activity_close_in_anim. 

 

通过以上设置,Activity切换时便可以显示切换动画效果。

下面四个文件定位的是上面用到的四个动画。

R.anim.activity_close_in_anim.xml

Xml代码  收藏代码

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

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

  3.   

  4.     <translate  

  5.         android:duration="400"  

  6.         android:fromXDelta="-100%p"  

  7.         android:fromYDelta="0"  

  8.         android:interpolator="@android :anim/decelerate_interpolator"  

  9.         android:toXDelta="0"  

  10.         android:toYDelta="0" />  

  11.   

  12. </set>  

 R.anim.activity_close_out_anim.xml

Xml代码  收藏代码

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

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

  3.     <translate  

  4.         android:duration="400"  

  5.         android:fromXDelta="0"  

  6.         android:fromYDelta="0"  

  7.         android:interpolator="@android :anim/decelerate_interpolator"  

  8.         android:toXDelta="100%p"  

  9.         android:toYDelta="0" />  

  10. </set>  

 R.anim.activity_open_in_anim.xml

Xml代码  收藏代码

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

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

  3.   

  4.     <translate  

  5.         android:duration="400"  

  6.         android:fromXDelta="100%p"  

  7.         android:fromYDelta="0"  

  8.         android:interpolator="@android :anim/decelerate_interpolator"  

  9.         android:toXDelta="0"  

  10.         android:toYDelta="0" />  

  11.   

  12. </set>  

 R.anim.activity_open_out_anim.xml

Xml代码  收藏代码

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

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

  3.   

  4.     <translate  

  5.         android:duration="400"  

  6.         android:fromXDelta="0"  

  7.         android:fromYDelta="0"  

  8.         android:interpolator="@android :anim/decelerate_interpolator"  

  9.         android:toXDelta="-100%p"  

  10.         android:toYDelta="0" />  

  11.   

  12. </set>  

这篇关于Android中Activity的切换动画(非overridePendingTransition)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017263

相关文章

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I