HarmonyOS鸿蒙Next中这段渐变动画ets怎么做好呢?

HarmonyOS鸿蒙Next中这段渐变动画ets怎么做好呢?

下面是Android代码:

// 斜率k
float k = 1f * h / w;
// 偏移
float offset = 1f * w / 2;
// 0f - offset * 2 为数值左边界(屏幕外左侧), w + offset * 2为数值右边界(屏幕外右侧)
// 目的是使光影走完一遍,加一些时间缓冲,不至于每次光影移动的间隔都那么急促
mValueAnimator = ValueAnimator.ofFloat(0f - offset * 2, w + offset * 2);
mValueAnimator.setRepeatCount(-1);
mValueAnimator.setInterpolator(new LinearInterpolator());
mValueAnimator.setDuration(1500);
mValueAnimator.addUpdateListener(animation -> {
    float value = (float) animation.getAnimatedValue();
    mLinearGradient = new LinearGradient(value, k * value, value + offset, k * (value + offset),
            new int[]{Color.parseColor("#00FFFFFF"),
                    Color.parseColor("#4dFFFFFF"),
                    Color.parseColor("#00FFFFFF")}, null, Shader.TileMode.CLAMP);
    mPaint.setShader(mLinearGradient);
    invalidate();
});
mValueAnimator.start();

那鸿蒙怎么写实现呢,有相关demo吗


更多关于HarmonyOS鸿蒙Next中这段渐变动画ets怎么做好呢?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中实现渐变动画,可以使用@ohos.animator模块中的Animator类。以下是一个简单的渐变动画实现示例:

  1. 定义动画资源:在resources/base/animation目录下创建一个动画资源文件,例如fade_in_out.json,内容如下:
{
  "animations": [
    {
      "duration": 1000,
      "easing": "linear",
      "keyframes": [
        {
          "fraction": 0,
          "value": 0
        },
        {
          "fraction": 0.5,
          "value": 1
        },
        {
          "fraction": 1,
          "value": 0
        }
      ]
    }
  ]
}
  1. 加载动画:在ets文件中加载并应用动画:
import animator from '@ohos.animator';

@Entry
@Component
struct FadeAnimation {
  private anim: animator.Animator = animator.createAnimator('fade_in_out');

  build() {
    Column() {
      Text('Fade In and Out')
        .fontSize(30)
        .opacity(this.anim.getValue())
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
    .onAppear(() => {
      this.anim.start();
    })
    .onDisappear(() => {
      this.anim.stop();
    })
  }
}
  1. 控制动画:通过start()stop()方法控制动画的启动和停止。

这个示例展示了如何在HarmonyOS鸿蒙Next中使用@ohos.animator模块实现一个简单的渐变动画。动画资源文件定义了动画的持续时间、缓动函数和关键帧,ets文件中加载并应用了该动画。

更多关于HarmonyOS鸿蒙Next中这段渐变动画ets怎么做好呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中实现渐变动画,可以使用@ohos.animator模块。首先,定义动画的起始和结束状态,然后使用Animator类创建动画对象,设置动画的持续时间、插值器等属性。通过on('frame', callback)监听动画帧变化,在回调函数中更新UI元素的属性,如背景色、透明度等。最后,调用start()方法启动动画。确保动画流畅,避免在主线程中进行耗时操作。

回到顶部