看了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设定。

最新文章

  1. goldengate abended with no data found
  2. OWIN-WebAPI-Windows Service
  3. Combination Sum III
  4. JQ避免出现多次执行一个事件的解决方案
  5. Linux 下 的 cc 和 gcc
  6. 运维监控利器smokeping 500报错处理
  7. Permutations,Permutations II,Combinations
  8. Windows实用快捷键
  9. .NET Core 学习笔记3&mdash;&mdash;EF Core
  10. 深入理解Java虚拟机读书笔记4----虚拟机类加载机制
  11. MySQL 约束、表连接、表关联、索引
  12. java函数式编程之Supplier
  13. LeetCode(33):搜索旋转排序数组
  14. centos7 新增ip
  15. C++ 各种继承
  16. Grafana是一个可视化面板-安装配置介绍
  17. Yii框架请求
  18. 洛谷 P3835: 【模板】可持久化平衡树
  19. 转载:mysql 操作总结 INSERT和REPLACE
  20. 【hdoj_1133】Buy the Ticket(卡特兰数+大数)

热门文章

  1. Linux dd 命令
  2. C#,PHP对应加密函数
  3. 如何使用Git——(一)
  4. Javascript中最常用的55个经典技巧
  5. 51nod1264线段相交
  6. Python 基础篇:介绍
  7. Failed to execute command: &quot;&quot;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ResGen.exe&quot; 的一个解决办法
  8. Cadence封装制作之表贴封装的制作
  9. sybase convert 函数
  10. 汽车之家, 比亚迪等成为开源数据库SSDB的用户