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

前言

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

效果图如下:

c036d749766dfa0e36f92a2bdeda31c3.gif

引入依赖

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);

效果图如下:

beeac25ef55de23a9240f190a788d3d9.gif

- 创建动画的最终位置

相对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();

}

总结

以上所述是小编给大家介绍的SpringAnimation 实现菜单从顶部弹出从底部消失动画效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值