文档章节

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

H
 HCMore
发布于 2014/05/11 19:46
字数 697
阅读 10941
收藏 5

摘自: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>  


本文转载自:http://fuyunhe.iteye.com/blog/1834874

共有 人打赏支持
H
粉丝 0
博文 13
码字总数 2412
作品 0
长宁
私信 提问
加载中

评论(4)

盛世伟君
48
盛世伟君
56464646
盛世伟君
88888
盛世伟君
1212343131
Activity间的转场动画(overridePendingTransition)

Activity间的切换动画: 1.第一个Activity退出的动画 2.第二个Activity进入的动画 使用系统的动画: 淡入浅出的效果: overridePendingTransition( android.R.anim.fadein , android.R.anim....

新根
2015/09/25
0
0
TabHost中的Activity调用overridePendingTransition()方法无效

在定义的MyActivity中,继承的是TabActivity,添加了几个Activity,比如说A、B、C,采用了TabHost管理切换不同的主页面。 现在A如果展示的是一个列表,点击每一项,可以进入A的子页面,这时候...

Xushao
2013/01/05
0
2
Android动画效果 translate、scale、alpha、rotate 切换Acti...

2011.10.28注:如果需要控件停在动画后的位置,需要设置android:fillAfter属性为true,在set节点中。默认在动画 结束后回到动画前位置。设置android:fillAfter后,我们看到了控件留在了动画后的...

Jerikc
2012/11/19
0
0
[Android] Activity页面切换效果

大家使用Android的原生UI都知道,Android的Activity跳转就是很生硬的切换界面。其实Android的Activity跳转可以设置各种动画。 通常,对Activity切换时加入过渡动画的方法是: 在startActivi...

枫兮兮
2014/02/27
0
0
Activity切换淡入淡出效果

在资源文件夹中的anim文件夹里创建补间动画XML文件, 淡入效果,ap1.xml文件代码如下: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/......

Jooo
2015/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

solr使用规范

0. 目的 规范solr设计、用法,避免bug,提高性能 1. 设计规范 solr的用途是查询,不是存储,建议查询结果尽量都为id主键,而后再拿该id主键到缓存或者db中再查询相关信息,例如:请勿将经销商...

andersChow
26分钟前
1
0
11-《深度拆解JVM》之Java对象的内存布局

一、问题引入 在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对...

飞鱼说编程
30分钟前
1
0
Windows Install Docker

win7、win8 win7、win8 等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ docker toolbox...

linuxprobe16
35分钟前
1
0
混合云环境中扩展Kubernetes的挑战及方案

流量突增时,我们需要扩展应用程序以满足用户需求。本文分享了扩展Kubernetes以及管理混合云环境时可能遇到的挑战,以及如何简单高效地完成Kubernetes扩展。 引 言 假设您的业务是在线的:您...

RancherLabs
43分钟前
1
0
Java集合小抄

Java集合小抄 1. List 1.1 ArrayList 以数组实现。节约空间,但是数组有容量限制。超出限制时会增加50%容量,用System.arraycopy()复制到新的数组。因此最好能给出数组大小的预估值。默认第一...

傅小水water
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部