Android使用动画来实现view向斜上方滑动

回顾

上一篇文章《使用Scroller实现文字从底部中间向斜上方两个对角滑动》.中提到了使用scoller结合computeScoll方法实现两个自定义view同时向父布局的左上角和右上角滑动。这种方式有两个比较大的缺陷,第一个缺陷就是需要两个自定义view,并且重写其computeScoll方法;第二个缺陷就是在布局中需要将两个自定义view分别放到两个Linnerlayout或者RelativeLayout中,否则两个view会向同一个方向运动

新的方式

首先再展示一下要实现的效果:
在这里插入图片描述
上图的效果其实就是向左上角滑动和向右上角滑动两个动画同时执行
既然是两个动画同时执行,那么就可以考虑使用一种更加简单的方式来实现:AnimatorSet 组合动画。

贴上代码,一目了然:

public void setAnimator(){
        ObjectAnimator mObjectAnimatorX1=ObjectAnimator.ofFloat(tv_test,"translationX",+500);
        ObjectAnimator mObjectAnimatorY1=ObjectAnimator.ofFloat(tv_test,"translationY",-200);
        ObjectAnimator mObjectAnimatorX2=ObjectAnimator.ofFloat(tv_test2,"translationX",-500);
        ObjectAnimator mObjectAnimatorY2=ObjectAnimator.ofFloat(tv_test2,"translationY",-200);
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.play(mObjectAnimatorX1).with(mObjectAnimatorY1)
        .with(mObjectAnimatorX2).with(mObjectAnimatorY2);
        animatorSet.setDuration(2000);
        animatorSet.start();
  }

首先定义四个动画mObjectAnimatorX1,mObjectAnimatorY1,mObjectAnimatorX2,mObjectAnimatorY2。定义滑动方向和距离。animatorSet.play()制定当前运行的动画,使用with方法指定同时运行的其他三个动画。也可以使用playTogether()传入多个动画同时运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
适用于任何视图的可自定义反弹动画库。Getting StartedIn your build.gradledependencies {     implementation 'hari.bounceview:bounceview:0.1.0'}UsageAdd animations to any views like so:Button button = view.findViewById(R.id.button);BounceView.addAnimTo(button);Use BounceView with dialogs:CustomDialog customDialog = new CustomDialog(getActivity());//Add animation to custom dialogBounceView.addAnimTo(customDialog);        //Call before showing the dialogcustomDialog.show();PopupWindow popupWindow;...//Add animation to popup windowBounceView.addAnimTo(popupWindow);        //Call before showing the popuppopupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0);AlertDialog dialog = builder.create();//Add animation to alert dialogBounceView.addAnimTo(dialog);        //Call before showing the dialogdialog.show();Some cool animations://Bounce animationBounceView.addAnimTo(button1)         .setScaleForPopOutAnim(1.1f, 1.1f);//Horizontal flip animationBounceView.addAnimTo(button2)         .setScaleForPopOutAnim(1f, 0f);//Vertical flip animationBounceView.addAnimTo(button3)         .setScaleForPopOutAnim(0f, 1f);//Flicker animationBounceView.addAnimTo(button4)         .setScaleForPopOutAnim(0f, 0f);Customize BounceView properties:Button button = view.findViewById(R.id.button);BounceView.addAnimTo(button)        //Default push in scalex: 0.9f , scaley: 0.9f         .setScaleForPushInAnim(BounceView.PUSH_IN_SCALE_X, BounceView.PUSH_IN_SCALE_Y)        //Default pop out scalex: 1.1f, scaley: 1.1f         .setScaleForPopOutAnim(BounceView.POP_OUT_SCALE_X, BounceView.POP_OUT_SCALE_Y)        //Default push in anim duration: 100 (in milliseconds)         .setPushInAnimDuration(BounceView.PUSH_IN_ANIM_DURATION)        //Default pop out anim duration: 100 (in milliseconds)         .setPopOutAnimDuration(BounceView.POP_OUT_ANIM_DURATION)        //Default interpolator: AccelerateDecelerateInterpolator()         .setInterpolatorPushIn(BounceView.DEFAULT_INTERPOLATOR)         .setInterpolatorPopOut(BounceView.DEFAULT_INTERPOLATOR);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值