树叶云鸿蒙OS教程:鸿蒙OS 动画开发指导

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

数值动画(AnimatorValue)

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

  1. 声明 AnimatorValue。
   AnimatorValue animator = new AnimatorValue();

  1. 设置变化属性。
   animator.setDuration(2000);
   animator.setDelay(1000);
   animator.setLoopedCount(2);
   animator.setCurveType(Animator.CurveType.BOUNCE);

  1. 添加回调事件。
   animator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
       @Override
       public void onUpdate(AnimatorValue animatorValue, float value) {
           button.setContentPosition((int) (800 * value), button.getContentPositionY());
       }
   });

  1. 启动动画或对动画做其他操作。
   animator.start();

AnimatorGroup 动画效果如图所示:

图1 数值动画效果

属性动画(AnimatorProperty)

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

  1. 声明 AnimatorProperty。
   AnimatorProperty animator = button.createAnimatorProperty();

  1. 设置变化属性,可链式调用。
   animator.moveFromX(50).moveToX(1000).rotate(180).alpha(0).setDuration(2500).setDelay(500).setLoopedCount(5);

  1. 启动动画或对动画做其他操作。
   animator.start();

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

   animator.setTarget(button2);

动画效果如图所示:

图2 属性动画效果

动画集合(AnimatorGroup)

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

  1. 声明 AnimatorGroup。
   AnimatorGroup animatorGroup = new AnimatorGroup();

  1. 添加要按顺序或同时开始的动画。
   // 4个动画按顺序播放
   animatorGroup.runSerially(am1, am2, am3, am4);
   // 4个动画同时播放
   animatorGroup.runParallel(am1, am2, am3, am4);

  1. 启动动画或对动画做其他操作。
   animatorGroup.start();

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

  1. 声明 AnimatorGroup Builder。
   AnimatorGroup.Builder animatorGroupBuilder = animatorGroup.build();

  1. 按播放顺序添加多个动画。
   // 4个动画的顺序为: am1 -> am2/am3 -> am4
   animatorGroupBuilder.addAnimators(am1).addAnimators(am2, am3).addAnimators(am4)

  1. 启动动画或对动画做其他操作。
   animatorGroup.start();

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

图3 动画集合效果

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/162919.html<

(0)
管理的头像管理
上一篇2025-03-18 22:06
下一篇 2025-03-18 22:08

相关推荐

  • 服务器SLA服务协议是什么有什么用,有哪些注意事项?

    服务器SLA服务协议是服务商与用户之间关于服务可用性、性能等方面的正式承诺,它直接决定了业务稳定性和运维成本,什么是服务器SLA服务协议服务器SLA(Service Level Agreement)是服务等级协议的缩写,在IDC和云服务领域,它是一份具有法律效力的合同附件,明确服务商必须提供的服务水平基准,这份……

    2026-07-26
    0
  • 站群服务器泛站和泛目录有什么区别?,怎么选

    泛站基于多个独立域名构建独立站点,泛目录则在同一域名下通过目录结构构建内容,这直接影响SEO权重分配和资源管理,什么是泛站和泛目录泛站模式泛站模式使用多个独立域名,每个域名部署独立网站,内容互不关联,这种结构下,每个站点各自积累SEO权重,适合需要大量外链或分散风险的场景,推广不同产品时,泛站能避免单一站点被处……

    2026-07-26
    0
  • 服务器防火墙硬件和软件哪个效果更好,怎么选

    在服务器防火墙的选型中,硬件防火墙与软件防火墙并非非此即彼,而是互补关系,对于追求高安全等级与稳定性的生产环境,采用硬件防火墙做网络层隔离,配合软件防火墙做主机层加固,是当前公认效果最好的组合方案,硬件防火墙与软件防火墙的核心差异性能与资源占用硬件防火墙依托专用ASIC芯片或FPGA处理数据包,转发延迟通常在微……

    2026-07-26
    0
  • 站群服务器做GEO的核心逻辑是什么?,怎么做

    站群服务器做SEO的核心逻辑,是通过独立IP和资源隔离,彻底切断站点间的关联性,让搜索引擎对每个网站进行独立评估,从而降低连带风险并提升整体排名效率,站群服务器的核心价值:独立性与隔离性IP独立性:为什么是命门搜索引擎在评估网站时,会记录IP地址,如果多个站点共享同一个IP,它们之间很容易被判定为同一主体控制……

    2026-07-26
    0
  • 弹性云服务器到底是什么意思怎么收费,多少钱一个月

    弹性云服务器(Elastic Cloud Server,ECS)是一种可随时调整计算资源的云服务器,收费方式以按需付费和包年包月为主,用户只需为实际使用的资源买单,什么是弹性云服务器弹性云服务器本质上是一台运行在云端、配置可以灵活调整的虚拟机,它不像物理服务器那样固定规格,你可以在业务高峰期快速增加CPU、内存……

    2026-07-26
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注