我是靠谱客的博主 懵懂钢笔,最近开发中收集的这篇文章主要介绍Activity 设置切换动画,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

设置Activity的切换动画,有两种方式:

1.使用overridePendingTransition(新Activity进入动画, 旧Activity退出动画),需要紧接在startActivity 和finish()后。

2.在manifest中配置Activity的theme。

下面着重说明第二种情况:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <style name="ThemeActivity" parent="AppBaseTheme">  
  2.     <item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>  
  3. </style>  
  4.   
  5. <style name="activityAnimatStyle" parent="@android:style/Animation.Activity">  
  6.   
  7.     <!-- 新Activity 进入 -->  
  8.     <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>  
  9.     <!-- 旧Activity退出 -->  
  10.     <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>  
  11.     <!-- 新Activity退出 -->  
  12.     <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>  
  13.     <!-- 旧Activity进入 -->  
  14.     <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>  
  15. </style>  

现在有3个Activity:A、B、C:

配置B的

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. android:theme="@style/ThemeActivity"  
这个时候 从A 启动B,会把android:activityOpenExitAnimation作用在A上,把android:activityOpenEnterAnimation作用在B上,此时从B回退到A,将使用系统默认的动画。

若从B启动C,然后从C回退到B,此时才会将Android:activityCloseExitAnimation作用在C,将android:activityCloseEnterAnimation作用在B。

所以在使用manifest配置的时候,需要注意显示的target 所配置的属性,就如同overridePendingTransition一样。所以这四个属性决定的是【显示】当前Activity的时候,他的动画和与之关联的动画。

我们可以在application 节点中配置theme,那么所有的Activity的进出动画都是一致的,如果要单独配置两个Activity的交互动画,可以如下配置:

A-->B

在A的theme中,只用声明:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 新Activity退出 -->  
  2. <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>  
  3. <!-- 旧Activity进入 -->  
  4. <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>  

在B的theme中,只声明:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <!-- 新Activity 进入 -->  
  2. <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>  
  3. <!-- 旧Activity退出 -->  
  4. <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>  

那么从A启动B时,会执行B声明的动画,此时要显示的是B,B是主体,当从B回退到A的时候,会执行A声明的动画,此时A是主体。

此时应该很清楚这四个属性作用的时机了吧。


这里还有一点要注意,如果使用了support包,theme的parent需要继承自Theme.AppCompat ,否则会报错。

如下

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <style name="AppBaseTheme" parent="Theme.AppCompat.Light">  
  2.   
  3.  </style>  
  4.   
  5.  <!-- Application theme. -->  
  6.  <style name="AppTheme" parent="AppBaseTheme">  
  7.      <!-- All customizations that are NOT specific to a particular API-level can go here. -->  
  8.  </style>  
  9.   
  10.  <style name="ThemeActivity" parent="AppBaseTheme">  
  11.      <item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>  
  12.  </style>  
  13.   
  14.  <style name="activityAnimatStyle" parent="@android:style/Animation.Activity">  
  15.   
  16.      <!-- 新Activity 进入 -->  
  17.      <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>  
  18.      <!-- 旧Activity退出 -->  
  19.      <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>  
  20.      <!-- 新Activity退出 -->  
  21.      <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>  
  22.      <!-- 旧Activity进入 -->  
  23.      <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>  
  24.  </style>  

最后

以上就是懵懂钢笔为你收集整理的Activity 设置切换动画的全部内容,希望文章能够帮你解决Activity 设置切换动画所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部