Android 设定activity的进入和退出效果
看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了。设置Dialog首先通过 getWindow()方法获取它的窗口,然后通过getAttributes()方法获得window的 WindowManager.LayoutParams lp, lp有个公共属性windowAnimations, 只要把要实现的animation的id赋值给它就可以了。问题是这个animation应该怎么写呢,研究发现,窗口进入和退出的效果分别是通过 @android:windowEnterAnimation和@android:windowExitAnimation两个item设定的,比如进入 时的anim是@anim/dialog_enter, 退出的是@anim/dialog_exit, 则声明一个style为:
<style name="mydialog">
<item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="@android:windowExitAnimation">@anim/dialog_exit</item>
</style>
然后把这个style的id传给lp.windowAnimations就行了。
Activity的进入和退出效果可以通过 @android:activityOpenEnterAnimation,@android:activityOpenExitAnimation,@android:activityCloseEnterAnimation,@android:activityCloseExitAnimation 这几个item设定,第一个表示新的activity创建进入效果,第2个表示activity还没有finish()下退出效果,第3个表示上一个 activity返回进入效果,第4个表示的是activity finish()之后退出效果...(好似有点乱了)。具体设置参考如下:
<style name="myact">
<item name="@android:activityOpenEnterAnimation">@anim/act_enter</item>
<item name="@android:activityOpenExitAnimation">@anim/act_exit</item>
<item name="@android:activityCloseEnterAnimation">@anim/act_enter</item>
<item name="@android:activityCloseExitAnimation">@anim/act_exit</item>
</style>
<style name="mytheme" parent="@android:style/Theme">
<item name="@android:windowAnimationStyle">@style/myact</item>
</style>
然后把mytheme这个style作为Activity的theme就行了,还有一个办法就是通过Acitvity获取它的window, 然后和设置dialog一样进行设置,因为归根到底是设置Window的layoutparams里的windowAnimations值。所以 Activity的进入和退出效果也可以通过@android:windowEnterAnimation和 @android:windowExitAnimation这两个item设定。
最新文章
- goldengate abended with no data found
- OWIN-WebAPI-Windows Service
- Combination Sum III
- JQ避免出现多次执行一个事件的解决方案
- Linux 下 的 cc 和 gcc
- 运维监控利器smokeping 500报错处理
- Permutations,Permutations II,Combinations
- Windows实用快捷键
- .NET Core 学习笔记3&mdash;&mdash;EF Core
- 深入理解Java虚拟机读书笔记4----虚拟机类加载机制
- MySQL 约束、表连接、表关联、索引
- java函数式编程之Supplier
- LeetCode(33):搜索旋转排序数组
- centos7 新增ip
- C++ 各种继承
- Grafana是一个可视化面板-安装配置介绍
- Yii框架请求
- 洛谷 P3835: 【模板】可持久化平衡树
- 转载:mysql 操作总结 INSERT和REPLACE
- 【hdoj_1133】Buy the Ticket(卡特兰数+大数)
热门文章
- Linux dd 命令
- C#,PHP对应加密函数
- 如何使用Git——(一)
- Javascript中最常用的55个经典技巧
- 51nod1264线段相交
- Python 基础篇:介绍
- Failed to execute command: ";";C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ResGen.exe"; 的一个解决办法
- Cadence封装制作之表贴封装的制作
- sybase convert 函数
- 汽车之家, 比亚迪等成为开源数据库SSDB的用户