鸿蒙os动画,鸿蒙OS 动画开发指导

动画是组件的基础特性之一,精心设计的动画使UI变化更直观,有助于改进应用程序的外观并改善用户体验。Java UI 框架提供了数值动画(AnimatorValue)和属性动画(AnimatorProperty),并提供了将多个动画同时操作的动画集合(AnimatorGroup)。

数值动画(AnimatorValue)

AnimatorValue 数值从 0 到 1 变化,本身与 Component 无关。开发者可以设置 0 到 1 变化过程的属性,例如:时长、变化曲线、重复次数等,并通过值的变化改变组件的属性,实现组件的动画效果。

声明 AnimatorValue。

AnimatorValue animator = new AnimatorValue();

设置变化属性。

animator.setDuration(2000);

animator.setDelay(1000);

animator.setLoopedCount(2);

animator.setCurveType(Animator.CurveType.BOUNCE);

添加回调事件。

animator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {

@Override

public void onUpdate(AnimatorValue animatorValue, float value) {

button.setContentPosition((int) (800 * value), button.getContentPositionY());

}

});

启动动画或对动画做其他操作。

animator.start();

AnimatorGroup 动画效果如图所示:

图1 数值动画效果

e63b21611b030d27ab2c288a8d20eca0.gif

属性动画(AnimatorProperty)

为 Component 的属性设置动画是非常常见的需求,Java UI 框架可以为 Component 设置某个属性或多个属性的动画。

声明 AnimatorProperty。

AnimatorProperty animator = button.createAnimatorProperty();

设置变化属性,可链式调用。

animator.moveFromX(50).moveToX(1000).rotate(180).alpha(0).setDuration(2500).setDelay(500).setLoopedCount(5);

启动动画或对动画做其他操作。

animator.start();

可以使用setTarget()改变关联的Component对象。

animator.setTarget(button2);

动画效果如图所示:

图2 属性动画效果

4908a8ea35c7a997437da1c84036a3f4.gif

动画集合(AnimatorGroup)

如果需要使用一个组合动画,可以把多个动画对象进行组合,并添加到使用 AnimatorGroup 中。AnimatorGroup 提供了两个方法:runSerially() 和 runParallel(),分别表示动画按顺序开始和动画同时开始。

声明 AnimatorGroup。

AnimatorGroup animatorGroup = new AnimatorGroup();

添加要按顺序或同时开始的动画。

// 4个动画按顺序播放

animatorGroup.runSerially(am1, am2, am3, am4);

// 4个动画同时播放

animatorGroup.runParallel(am1, am2, am3, am4);

启动动画或对动画做其他操作。

animatorGroup.start();

为了更加灵活处理多个动画的播放顺序,例如一些动画顺序播放,一些动画同时播放,Java UI框架提供了更方便的动画Builder接口:

声明 AnimatorGroup Builder。

AnimatorGroup.Builder animatorGroupBuilder = animatorGroup.build();

按播放顺序添加多个动画。

// 4个动画的顺序为: am1 -> am2/am3 -> am4

animatorGroupBuilder.addAnimators(am1).addAnimators(am2, am3).addAnimators(am4)

启动动画或对动画做其他操作。

animatorGroup.start();

动画集合的动画效果如下:

图3 动画集合效果

cbc18cc8deae3c285da54b96db110714.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值