HarmonyOS 鸿蒙Next中动态缩放动画

HarmonyOS 鸿蒙Next中动态缩放动画 一个组件的高度是0, 点击按钮后, 高度会变成自适应高度. 这种动画有什么实现方式

5 回复
@Entry
@Component
struct AnimationPage {
  @State message: string = 'Hello World fhlsfslfslfhklafhlaskhfkjsfhjksadfhlkjsafsafhkjsfhkljfhjksafhkjasfksfh';
  @State textY:number = 0

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(20)
          .fontWeight(FontWeight.Bold)
          .scale({x:1,y:this.textY})
          .animation({
              duration:2000,
              curve: "linear"
          })
          .id("text")

        Button("点击动画展开").onClick((ele)=>{
          this.textY = 1
        })
          .width(200).height(50)
          .backgroundColor(Color.Pink).borderRadius(10)
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next中动态缩放动画的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


transition和animateTo不能实现吗?

在HarmonyOS(鸿蒙)中,动态缩放动画可以通过使用@ohos.animator模块中的ScaleAnimator来实现。ScaleAnimator允许开发者定义视图的缩放动画,包括缩放的中心点、起始和结束的缩放比例等参数。

首先,需要在ets文件中导入@ohos.animator模块:

import animator from '@ohos.animator';

接下来,可以通过创建ScaleAnimator对象来定义缩放动画。以下是一个简单的示例:

let scaleAnimator = new animator.ScaleAnimator({
    duration: 1000, // 动画持续时间,单位毫秒
    fromX: 1.0,     // 起始X轴缩放比例
    toX: 2.0,       // 结束X轴缩放比例
    fromY: 1.0,     // 起始Y轴缩放比例
    toY: 2.0,       // 结束Y轴缩放比例
    pivotX: 0.5,    // 缩放中心点X坐标,相对于视图宽度的比例
    pivotY: 0.5     // 缩放中心点Y坐标,相对于视图高度的比例
});

// 将动画应用到目标视图
scaleAnimator.setTarget(this.$refs('targetView'));

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

在上述代码中,ScaleAnimator的参数包括:

  • duration:动画持续时间,单位为毫秒。
  • fromXtoX:X轴的起始和结束缩放比例。
  • fromYtoY:Y轴的起始和结束缩放比例。
  • pivotXpivotY:缩放的中心点,相对于视图的宽度和高度比例。

通过setTarget方法将动画应用到指定的视图,然后调用start方法启动动画。

此外,ScaleAnimator还支持设置动画的重复次数、反转模式等属性,开发者可以根据需求进行配置。例如:

scaleAnimator.setRepeatCount(3); // 设置动画重复次数
scaleAnimator.setRepeatMode(animator.RepeatMode.REVERSE); // 设置动画反转模式

总结来说,在HarmonyOS中,动态缩放动画可以通过ScaleAnimator来实现,开发者可以根据需要定义缩放比例、中心点、持续时间等参数,并将动画应用到目标视图上。

在HarmonyOS鸿蒙Next中,动态缩放动画可以通过AnimatorAnimation模块实现。使用Animator时,可以创建ScaleAnimation对象,设置起始和结束的缩放比例,并指定动画时长。通过start()方法触发动画。例如:

ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 2.0f, 1.0f, 2.0f, 
    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnim.setDuration(1000); // 1秒
view.startAnimation(scaleAnim);

此代码使视图在1秒内从原始大小放大到2倍。通过调整参数,可以实现更复杂的缩放效果。

回到顶部