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">android

    <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>web

   <item name="@android:windowExitAnimation">@anim/dialog_exit</item>post

</style>spa

而后把这个style的id传给lp.windowAnimations就好了。orm

     Activity的进入和退出效果能够经过 @android:activityOpenEnterAnimation,@android:activityOpenExitAnimation,@android:activityCloseEnterAnimation,@android:activityCloseExitAnimation 这几个item设定,第一个表示新的activity建立进入效果,第2个表示activity尚未finish()下退出效果,第3个表示上一个 activity返回进入效果,第4个表示的是activity finish()以后退出效果...(好似有点乱了)。具体设置参考以下:blog

  <style name="myact">ci

      <item name="@android:activityOpenEnterAnimation">@anim/act_enter</item>资源

      <item name="@android:activityOpenExitAnimation">@anim/act_exit</item>get

      <item name="@android:activityCloseEnterAnimation">@anim/act_enter</item>animation

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

相关文章
相关标签/搜索