Activity和Frament转场动画

Activity转场动画的实现方式

  1. overridePendingTransition(int enterAnim ,int exitAnim )

    overridePendingTransition方法需要在startAtivity方法或者是finish方法调用之后立即执行

    参数enterAnim表示的是从Activity a跳转到Activity b,进入b时的动画效果

    参数exitAnim表示的是从Activity a跳转到Activity b,离开a时的动过效果

    若进入b或者是离开a时不需要动画效果,则可以传值为0(如果出现activity黑色背景,则定义一个空的动画进行加载)

  2. 使用style的方式定义Activity的切换动画

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="Android:windowAnimationStyle">@style/activityAnim</item>    
    

    <style name="activityAnim">
            <item name="Android:activityOpenEnterAnimation">@anim/slide_in_top</item>
            <item name="Android:activityOpenExitAnimation">@anim/slide_in_top</item>
    

    而在windowAnimationStyle中存在四种动画:

    activityOpenEnterAnimation // 用于设置打开新的Activity并进入新的Activity展示的动画
    activityOpenExitAnimation  // 用于设置打开新的Activity并销毁之前的Activity展示的动画
    activityCloseEnterAnimation  // 用于设置关闭当前Activity进入上一个Activity展示的动画
    activityCloseExitAnimation  // 用于设置关闭当前Activity时展示的动画
    
  3. 使用MD风格的ActivityOptions切换动画实现Activity跳转动画(兼容包ActivityOptionsCompat)

    Intent intent = new Intent(MainActivity.this, ThreeActivity.class);
    startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());
    

Fragment转场动画的实现

  • 标准转场动画

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

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

      TRANSIT_NONE,

      TRANSIT_FRAGMENT_OPEN,

      TRANSIT_FRAGMENT_CLOSE

      分别对应无动画、打开形式的动画和关闭形式的动画。

      标准动画设置好后,在Fragment添加和移除的时候都会有。

  • 自定义转场动画

      自定义转场动画是通过setCustomAnimations()方法,因为Fragment添加时可以指定加入到Back Stack中,所以转场动画有添加、移除、从Back stack中pop出来,还有进入四种情况。

    注意setCustomAnimations()方法必须在add、remove、replace调用之前被设置,否则不起作用

    使用v4包,Fragment的使用不再局限于API Level 11之上,低等级的API也可以使用,但是这时候转场动画的类型是View Animation。

    动画资源放在res\anim\路径下,和Activity的转场动画一样。

    Fragment中的方法:onCreateAnimation(int transit, boolean enter, int nextAnim)返回值Animation。

    FragmentTransaction中的setCustomAnimations()方法,两参数类型和四参数类型都可用。

    private void addFragment() {
        if (null == mFragmentManager) {
            mFragmentManager = getSupportFragmentManager();
        }
    
        mTextFragmentOne = new MyFragmentOne();
        FragmentTransaction fragmentTransaction = mFragmentManager
                .beginTransaction();
        fragmentTransaction.setCustomAnimations(
                R.anim.push_left_in,
                R.anim.push_left_out,
                R.anim.push_left_in,
                R.anim.push_left_out);
    
        fragmentTransaction.add(R.id.container, mTextFragmentOne);
    
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    }
    

摘自

Activity转场动画的五种实现方式

Fragment的转场动画

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值