继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

android转场动画windowAnimation和ActivityAnimation的区别

白板的微信
关注TA
已关注
手记 341
粉丝 70
获赞 385

显而易见,window与Activity本身从名字上就知道不同,但对于项目开发中 windowAnimation和ActivityAnimation的区别必须心领神会。

区别主要如下

1.windowAnimation包括windowEnterAnimationwindowExitAnimation;ActivityAnimation包含android:activityOpenEnterAnimationandroid:activityOpenExitAnimationandroid:activityCloseEnterAnimationandroid:activityCloseExitAnimation

2.在项目中WindowAnimation的控制权大于Activity的控制权,即在Activity转场过程中,如果同时设置了WindowAnimation和ActivityAnimation,那么可能(因为这种情况非常多)只会执行WindowAnimation

3.对于WindowAnimation的定义很简单,在style.xml文件中只需要继承Animation Style即可

?

1

2

3

4

5

6

   <style name="Animation" parent="@android:style/Animation">

          <!--窗体进入动画-->

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

        <!--窗体退出动画-->

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

    </style>

对于Activity,需要继承Animation Activity Style

?

1

2

3

4

5

6

<style name="FeelyouWindowAnimTheme" parent="@android:style/Animation.Activity">

        <item name="android:activityOpenEnterAnimation">@android:anim/slide_in_left</item>

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

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

        <item name="android:activityCloseExitAnimation">@anim/push_left_out</item>

</style>

?

1

2

3

4

当我们从 A1 启动 A2 时,A1 从屏幕上消失,这个动画叫做 android:activityOpenExitAnimation

当我们从 A1 启动 A2 时,A2 出现在屏幕上,这个动画叫做 android:activityOpenEnterAnimation

当我们从 A2 退出回到 A1 时,A2 从屏幕上消失,这个叫做 android:activityCloseExitAnimation

当我们从 A2 退出回到 A1 时,A1 出现在屏幕上,这个叫做 android:activityCloseEnterAnimation

从上述2中动画的定义上来看,显然ActivityAnimation更为复杂,但这种复杂带来的转场效果非常好,可以同时控制2个Activity的动画,而不像WindowAnimation只能控制下一个Activity的窗体动画。

5.在开发中,窗体动画也可以使用 Activity.overridePendingTransition来设置,也可以定义在主题中,但Activity只能使用在主题中

?

1

2

3

4

5

6

7

8

9

10

<application

        android:name="test.view.weitop.BaseApplication"

        android:allowBackup="false"

        android:hardwareAccelerated="false"

        android:icon="@drawable/app_logo"

        android:label="@string/app_name"

        android:largeHeap="true"

        android:theme="@style/Theme.App" >

         

</application>

6.对于比较追求界面美感的动画,使用ActivityAnimation要好得多,因此对于一般开发使用windowAnimation即可,但对于追求用户体验,那么直接使用Activity Animation 吧

 

 

这里分享了一篇关于Activity动画的研究博客:http://www.oschina.net/question/97118_34343

-------------------------------------------------2014-12-27新增内容------------

Android布局动画,所谓布局动画并不是指专门作用在ViewGroup上的动画,而是作用到不居中的Child的有序动画

1.LayoutAnimationController --->第三方控件 WheelView的核心部分

?

1

2

3

4

5

 ScaleAnimation sa =new ScaleAnimation(0.5f, 1f, 0.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

            sa.setDuration(2000);

            LayoutAnimationController lac = new LayoutAnimationController(sa, 0.5f);

            lac.setOrder(LayoutAnimationController.ORDER_REVERSE);

            rootView.setLayoutAnimation(lac);

2.android:animateLayoutChanges="true"

表示布局中childView的的大小改变,删除,增加时的 fade in 或者 fade out的动画

3.android:layoutAnimation="@anim/listview_anim" 

android:layoutAnimation 和LayoutAnimationController作用类似,不同点在于,前者定义在xml中,后者使用代码编写

 原文链接:http://www.apkbus.com/blog-241057-58984.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP