欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringAnimation 实现菜单从顶部弹出从底部消失动画效果

程序员文章站 2024-02-11 19:43:58
前言 实现一种菜单,菜单从顶部弹入,然后从底部消失,顶部弹入时,有一个上下抖动的过程,底部消失时,先向上滑动,然后再向下滑动消失。  效果图如下: 引入...

前言

实现一种菜单,菜单从顶部弹入,然后从底部消失,顶部弹入时,有一个上下抖动的过程,底部消失时,先向上滑动,然后再向下滑动消失。

 效果图如下:

SpringAnimation 实现菜单从顶部弹出从底部消失动画效果

引入依赖

implementation 'com.android.support:support-dynamic-animation:27.1.1'1

创建springanimation需要三个参数。

•做动画的view

•做动画的类型(dynamicanimation)

alpha
rotation
rotation_x
rotation_y
scale_x
scale_y
scroll_x
scroll_y
translation_x
translation_y
translation_z
x
y
z

上边的gif图为dynamicanimation为translation_y的预览图,现在我们把参数设置为rotation,

springanimation signupbtnanimy = new springanimation(constraintlayout, dynamicanimation.rotation, 0);

效果图如下:

SpringAnimation 实现菜单从顶部弹出从底部消失动画效果 

- 创建动画的最终位置

 相对view的当前位置的偏移量。

springforce

为了让动画流畅,有弹簧的性质,需要设置springforce的相关参数。

- stiffness

即刚度,此值越大,产生的里越大,动画中弹性效果越不明显,运动比较快。

stiffness_high
stiffness_low
stiffness_medium
stiffness_very_low

设置方法为:

signupbtnanimy.getspring().setstiffness(springforce.stiffness_low);

•dampingratio阻尼比

 即阻尼比,此值越大,弹簧效果停止的越快

damping_ratio_high_bouncy
damping_ratio_low_bouncy
damping_ratio_medium_bouncy
damping_ratio_no_bouncy

设置方法为:

signupbtnanimy.getspring().setdampingratio(springforce.damping_ratio_medium_bouncy);

startvelocity

启动速度,默认速度为0,单位是px/second.

整体代码如下:

•显示菜单动画

public void showanimal() {
    setvisibility(view.visible);
    springanimation signupbtnanimy = new springanimation(constraintlayout, dynamicanimation.translation_y, 0);
    signupbtnanimy.getspring().setstiffness(springforce.stiffness_low);
    signupbtnanimy.getspring().setdampingratio(springforce.damping_ratio_medium_bouncy);
    signupbtnanimy.setstartvelocity(5000);
    signupbtnanimy.start();
  }

•隐藏菜单动画

public void hideanimal() {
    height = (screentools.getscreenheight(getcontext()) - constraintlayout.getheight()) / 2 + constraintlayout.getheight() + screentools.dp2px(getcontext(),50);
    objectanimator animator = objectanimator.offloat(constraintlayout, "translationy", 0f, -100f, height);
    animator.setduration(600);
    animator.setinterpolator(new decelerateinterpolator());
    animator.addlistener(new animatorlisteneradapter() {
      @override
      public void onanimationend(animator animation) {
        super.onanimationend(animation);
        setvisibility(gone);
        relayout();
      }
    });
    animator.start();
  }

源码:https://github.com/lsnumber1/studyspringanimation

总结

以上所述是小编给大家介绍的springanimation 实现菜单从顶部弹出从底部消失动画效果,希望对大家有所帮助