Activity 设置切换动画
extends://blog.csdn.net/luohaowang320/article/details/42124225 | http://blog.csdn.net/xuewater/article/details/36398803
最近写项目的时候需要用到大量的activity切换动画,于是就用了考虑到了theme中引用style来实现,但是竟然无效,很是郁闷,几经波折,找到了原因,原来是style里面设置了android:windowIsTranslucent这个属性,代码如下:
<style name="AppTranslateTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@style/animation_translucent_translate</item>
</style>
解决办法就是,windowAnimationStyle需要继承Animation.Translucent,一般情况是继承的Animation.Activity,下面是代码:
<!-- <style name="anim_activity" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/activity_open_in_anim</item>
<item name="android:activityOpenExitAnimation">@anim/activity_open_out_anim</item>
<item name="android:activityCloseEnterAnimation">@anim/activity_close_in_anim</item>
<item name="android:activityCloseExitAnimation">@anim/activity_close_out_anim</item>
</style> -->
<style name="animation_translucent_translate" parent="@android:style/Animation.Translucent">
<item name="android:windowEnterAnimation">@anim/activity_open_in_anim</item>
<item name="android:windowExitAnimation">@anim/activity_open_out_anim</item>
</style>
问题解决。
如果还没解决,就是手机动画效果关掉了,或者手机rom问题。。
------------------------------------------------------------------------------------
设置Activity的切换动画,有两种方式:
1.使用overridePendingTransition(新Activity进入动画, 旧Activity退出动画),需要紧接在startActivity 和finish()后。
2.在manifest中配置Activity的theme。
下面着重说明第二种情况:
<style name="ThemeActivity" parent="AppBaseTheme">
<item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>
</style> <style name="activityAnimatStyle" parent="@android:style/Animation.Activity"> <!-- 新Activity 进入 -->
<item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
<!-- 旧Activity退出 -->
<item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
<!-- 新Activity退出 -->
<item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
<!-- 旧Activity进入 -->
<item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>
</style>
现在有3个Activity:A、B、C:
配置B的
这个时候 从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中,只用声明:
在B的theme中,只声明:
<!-- 新Activity 进入 -->
<item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
<!-- 旧Activity退出 -->
<item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
那么从A启动B时,会执行B声明的动画,此时要显示的是B,B是主体,当从B回退到A的时候,会执行A声明的动画,此时A是主体。
此时应该很清楚这四个属性作用的时机了吧。
这里还有一点要注意,如果使用了support包,theme的parent需要继承自Theme.AppCompat ,否则会报错。
如下
在CODE上查看代码片派生到我的代码片
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"> </style> <!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style> <style name="ThemeActivity" parent="AppBaseTheme">
<item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>
</style> <style name="activityAnimatStyle" parent="@android:style/Animation.Activity"> <!-- 新Activity 进入 -->
<item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
<!-- 旧Activity退出 -->
<item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
<!-- 新Activity退出 -->
<item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
<!-- 旧Activity进入 -->
<item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>
</style>
测试代码路径 http://download.csdn.net/detail/luohaowang320/8295207
Activity 设置切换动画的更多相关文章
- Activity设置切换动画时黑屏问题的解决
//当这么设置的时候.打开Acticity的时候会黑屏一下 overridePendingTransition(R.anim.activity_open,0); //改成例如以下代码 完美解决这个问题 ...
- Android的Activity屏幕切换动画-左右滑动切换
. --> 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始 ...
- Android的Activity屏幕切换动画(一)-左右滑动切换
(国内知名Android开发论坛eoe开发者社区推荐:http://www.eoeandroid.com/) Android的Activity屏幕切换动画(一)-左右滑动切换 在Android开发过程 ...
- Android的Activity屏幕切换动画左右滑动切换
在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity ...
- Activity的切换动画
Activity在切换或者退出的时候可以自定义动画的,比如AlphaAnimation.TranslateAnimation.ScaleAnimation等自定义的动画.我们在Activity启动的时 ...
- Android Activity的切换动画(overridePendingTransition)
overridePendingTransition 1.平时Activity的切换是就是从中间弹出来,然后遮盖住之前的Activity.这种效果看到很多后就想给他换成其他的效果,如: 要显示的Acit ...
- activity添加切换动画之后出现的黑色背景问题
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> & ...
- Android Activity的切换动画
Android的Activity切换有两种方法, 第一种是用代码方式实现: Activity A跳转到Activity B,要在startActivity(intent)后面加上overridePen ...
- Android中的动画具体解释系列【4】——Activity之间切换动画
前面介绍了Android中的逐帧动画和补间动画,并实现了简单的自己定义动画.这一篇我们来看看怎样将Android中的动画运用到实际开发中的一个场景--Activity之间跳转动画. 一.定义动画资源 ...
随机推荐
- DataGridView使用技巧三:不显示最下面的新行、判断新增行
一.DataGridView不显示下面的新行 通常DataGridView的最下面一行是用户新追加的行(行头显示*).如果不想让用户新追加行即不想显示该新行,可以将DataGridView对象的All ...
- ubuntu workbench
先安装环境 sudo apt-get install python-paramikosudo apt-get install python-pysqlite2 当然mysql要装好 还要装 sudo ...
- 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
步骤: 1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/a ...
- 第二百九十七节,python操作redis缓存-List类型,可以理解为列表
python操作redis缓存-List类型,可以理解为列表,是可以有重复元素的列表 List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name ...
- C++ 数据抽象
C++ 数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节. 数据抽象是一种依赖于接口和实现分离的编程(设计)技术. 让我们举一个现实生活中的真实例子, ...
- 用C语言实现解析简单配置文件的小工具
本文介绍作者写的一个小工具,简单的代码中包含了C语言对字符串的处理技巧,对文本文件的简单解析,二进制文件的数据复制的方法,以及格式化输出文本文件的示例. 工具的输入是如下内容的配置文件: ;资源管理器 ...
- 原生js版ajax请求
function getXMLHttpRequest() { var xhr; if(window.ActiveXObject) { xhr= new ActiveXObject("Micr ...
- otunnel : 一个和lcx差不多的端口转发的工具
项目地址 ooclab/otunnel 下载地址(内涵各大平台) http://dl.ooclab.com/otunnel/ otunnel 用法 前提: 1. 假设 server 的地址为 exam ...
- shiro 解决 跨域(仅端口不同) 登陆 问题
1. 登陆成功设置cookie (服务端 通过 json返回 token) //设置cookie document.cookie = "JSESSIONID="+data.data ...
- 【转载】Redhat5和6 YUM源配置的区别
Redhat5和6 YUM源配置的区别 一.概述 随着各个软件版本的不断升级,我们需要掌握的软件特性也越来越多,技术的不断更新也促进了我们脑细胞的循环. 今天在配置RedHat6.3的yum源 ...