您的位置:首页 > 其它

动画AnimatorSet

2015-08-24 20:07 405 查看
ValueAnimator:这个类提供了一个简单的计时引擎运行动画动画计算值和设置目标对象。

注意:使用该类时一般都是用:ObjectAnimator,而基于ObjectAnimator执行的属性动画,都是根据java的反射机制来设置的。

如下,定义三个动画:

1. 设置Y轴的活动范围;

int startY =
mPortraitCustomMenuHeight;

int endY = 0;

2. 设置几组动画

ObjectAnimator
menuAnimator = ObjectAnimator.ofFloat(mPortraitCustomMenu, "translationY",
startY,
endY); //向下运动

ObjectAnimator bottomBarAnimator = ObjectAnimator.ofFloat(mBottomBar, "translationY", endY, -startY);
//向下运行

ObjectAnimator dimViewAnimator = ObjectAnimator.ofInt(mDimDrawable, "alpha", 0, 156);

3.为以上几组动画设置执行顺序

final AnimatorSet set = new AnimatorSet(); //动画

set.playTogether(menuAnimator, bottomBarAnimator, dimViewAnimator);
//设置同时运行一组动画

set.setDuration(CUSTOM_MENU_ANIMATION_DURATION); //设置动画的时间

//setInterpolator:设置一个插入器,例如:减速器(DecelerateInterpolator),加速器(AccelerateInterpolator)

set.setInterpolator(new DecelerateInterpolator());

set.addListener(new AnimatorListenerAdapter() {

@Override

public void onAnimationStart(Animator animation) {
//动画开始

mController.setBlockEvents(true);

mBottomBar.onCustomMenuStateChanged(true);

mUrlBarAutoShowManager.onCustomMenuWillShow(mPortraitCustomMenu);

}

@Override

public void onAnimationEnd(Animator animation) {
//动画结束

mController.setBlockEvents(false);

mUrlBarAutoShowManager.onCustomMenuDidShow(mPortraitCustomMenu);

}

@Override

public void onAnimationCancel(Animator animation) {

resetCustomMenuState(); //关闭底部菜单

}

});

set.start(); //启动动画

}

AnimatorSet:这个类为一组特定的动画指定顺序。

  总要方法如下:

  play:该方法创建一个构造器对象用于创建约束。

  playTogether:设置同时运行一组动画

  pase:暂停一个正在运行的动画

  resume:重新运行暂停后的动画

  isRunning:判断动画是否正在运行

  isStarted:判断动画是否已经运行了

  start:开始动画

AnimatorSet.Builder创建一个用于约束动画的建造器

  after(Animator):执行前面的动画后执行该动画

  after(long delay):延迟n毫秒之后执行动画

  before(Animator):执行前面动画前执行动画

  with(Animator):和前面动画一块执行

例如:

//设置动画对象的顺序
AnimatorSet bouncer = new AnimatorSet();
//先加速下落然后再执行挤压动画1
bouncer.play(bounceAnim).before(squashAnim1);
//播放挤压动画1的同事播放挤压动画2
bouncer.play(squashAnim1).with(squashAnim2);
bouncer.play(squashAnim1).with(stretchAnim1);
bouncer.play(squashAnim1).with(stretchAnim2);
//执行完挤压动画后执行小球弹起动画
bouncer.play(bounceBackAnim).after(stretchAnim2);
//开始执行动画
bouncer.start();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: