Andriod动画中windowEnterAnimation和activityOpenEnterAnimation的区别


转自:http://www.drovik.com/html/7258433323.html

在做android动画的过程中,遇到了设置动画的两个参数windowEnterAnimation和activityOpenEnterAnimation。看了android的源代码和资源文件,终于明白二者的区别: windowEnterAnimation用于修饰dialog动画, activityOpenEnterAnimation用于修饰activity的动画。


        具体用法如下:

        1、设置Dialog动画

A、
      通过getWindow()方法获取它的窗口,然后通过getAttributes()方法获得window的WindowManager.LayoutParams lp, lp有个公共属性windowAnimations, 只要把要实现的animation的id赋值给它就可以了
Dialog  dialog  =   new   Dialog ( this );
dialog . getWindow (). getAttributes (). windowAnimations  =  R . style . PauseDialogAnimation
B、通过在创建Dialog的过程中动态的把动画文件的ID穿进去。
Dialog  dialog  =   new   Dialog ( this ,  R . style . PauseDialog );
// Setting the title and layout for the dialog
dialog . setTitle ( R . string . pause_menu_label );
dialog . setContentView ( R . layout . pause_menu );
说明:需要首先在res/value/下创建style.xml文件
xml version = "1.0"  encoding = "utf-8" ?>
name = "PauseDialog"   parent = "@android:style/Theme.Dialog" >
< item name = "android:windowAnimationStyle" >@ style / PauseDialogAnimation item >
name = "PauseDialogAnimation" >
< item name = "android:windowEnterAnimation" >@ anim / spin_in item >
< item name = "android:windowExitAnimation" >@ android : anim / slide_out_right item >

2、设置activity动画

a、
activity的进入和退出效果可以通过

@android:activityOpenEnterAnimation,
@android:activityOpenExitAnimation,
@android:activityCloseEnterAnimation,
@android:activityCloseExitAnimation

四个item设定。

具体代码设置参考如下:




然后把mytheme这个style作为Activity的theme就行了

b、

      也通过acitvity获取它的window, 然后和设置dialog一样进行设置。  acitvity的动画设置归根结底是设置Window的layoutparams里的windowAnimations值。

你可能感兴趣的:(android)