回顾
上一篇文章《使用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()传入多个动画同时运行。