Dialog、Activity和Fragment设置切换动画

Dialog切换动画的设置

设置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切换动画的设置

设置Activity的切换动画,有三种方式:

1.使用overridePendingTransition(新Activity进入动画, 旧Activity退出动画),需要紧接在startActivity 和finish()后。

2.在manifest中配置Activity的theme。

<style name="ThemeActivity" parent="AppBaseTheme">
    <item name="android:windowAnimationStyle">@style/activityAnimatStyle</item>
</style>

<style name="activityAnimatStyle" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/animate_right_in</item>
    <item name="android:activityOpenExitAnimation">@anim/animate_old_aphla</item>
    <item name="android:activityCloseExitAnimation">@anim/animate_left_out</item>
    <item name="android:activityCloseEnterAnimation">@anim/animate_old_aphla</item>
</style>

3、通过Acitvity获取它的window, 然后和设置dialog一样进行设置,因为归根到底是设置Window的layoutparams里的windowAnimations值。所以Activity的进入和退出效果也可以通过@android:windowEnterAnimation和@android:windowExitAnimation这两个item设定。

需要说明的是在项目中WindowAnimation优先级大于Activity,即在Activity转场过程中,如果同时设置了WindowAnimation和ActivityAnimation,那么很可能只会执行WindowAnimation。

Fragment切换动画的设置

Fragment的设置需要在transaction.add 或transaction.remove之前。
Fragment有两种方式,一种android提供了标准方法,一种自定义动画

1、 Fragment指定标准的转场动画,通过setTransition(int transit)方法

//淡入淡出的默认动画
transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

还可以传入的参数
该方法可传入的三个参数是:

TRANSIT_NONE,
TRANSIT_FRAGMENT_OPEN,
TRANSIT_FRAGMENT_CLOSE

分别对应无动画、打开形式的动画和关闭形式的动画。
标准动画设置好后,在Fragment添加和移除的时候都会有。

2、自定义转场动画
setCustomAnimations()方法,因为Fragment添加时可以指定加入到Back Stack中,所以转场动画有添加、移除、从Back stack中pop出来,还有进入四种情况。
setCustomAnimations()方法必须在add、remove、replace调用之前被设置,否则不起作用。

//设置自定义过场动画
transaction.setCustomAnimations(            
    R.anim.enter_push_left_in,
    R.anim.exit_push_left_out,
    R.anim.popEnter_push_left_in,
    R.anim.popExit_push_left_out);

参考文章:
Activity 设置切换动画

android 设定activity的进入和退出效果

Android转场动画的实现

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值