动画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):和前面动画一块执行
例如:
注意:使用该类时一般都是用: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();
相关文章推荐
- Binary Tree SDUT 2499
- 上海外滩附近一日游
- Unity3D汽车物理引擎的安卓重力感应适配
- POJ 3356 AGTC(最长公共子)
- 软件测试系列之软件测试过程模型V,W,H,X等
- 【欧拉函数算法总结&&运算原理&&模板】
- 青蛙的约会(扩展欧几里得模板题(模板已升级))
- ARM寻址方式
- 前端弹出层控件
- static函数和变量(转载)
- iOS 如何更新APP
- JDBC之调用存储过程
- [转] Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
- 使用Gson解析管理类
- adaptiveThreshold函数
- SDUTOJ 2080 最长公共子序列问题(LCS)
- eclipse转用android studio——常用快捷键
- bootloader总体操作设计
- hadoop群集 启动
- ubuntu9.04 gedit 乱码与修改系统编码