HarmonyOS鸿蒙Next中如何动态修改动画时间duration?
HarmonyOS鸿蒙Next中如何动态修改动画时间duration?
.animation({ duration: this.duration, // 动画持续时间(毫秒) iterations: -1, curve: Curve.Linear, })
动态修改duration不生效
5 回复
@Entry
@Component
struct Page17 {
@State myScale: number = 1
@State duration: number = 300
stopAnim() {
animateTo({
duration: 0, // 动画持续时间(毫秒)
iterations: 0,
curve: Curve.Linear,
onFinish: () => {
}
}, () => {
this.myScale = 1
})
}
startAnim() {
this.myScale = 1
animateTo({
duration: this.duration, // 动画持续时间(毫秒)
iterations: -1,
curve: Curve.Linear,
}, () => {
this.myScale = 0.5
})
}
build() {
Column({ space: 20 }) {
Text('测试')
.width('300lpx')
.height('300lpx')
.backgroundColor(Color.Orange)
.borderRadius(10)
.scale({ x: this.myScale, y: this.myScale })
Button('停止动画').onClick(() => {
this.duration = 0
this.stopAnim()
})
Button('300毫秒').onClick(() => {
this.duration = 300
this.stopAnim()
this.startAnim()
})
Button('1000毫秒').onClick(() => {
this.duration = 1000
this.stopAnim()
this.startAnim()
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS鸿蒙Next中如何动态修改动画时间duration?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
代码没毛病,
居然这么繁琐,
在HarmonyOS鸿蒙Next中,动态修改动画时间(duration)可以通过AnimatorProperty类来实现。首先,创建一个AnimatorProperty对象,并设置初始的动画时间。然后,使用setDuration方法在运行时动态修改动画的持续时间。
例如:
import animator from '@ohos.animator';
let animatorProperty = new animator.AnimatorProperty();
animatorProperty.duration(1000); // 初始动画时间为1000毫秒
// 动态修改动画时间
animatorProperty.setDuration(2000); // 将动画时间修改为2000毫秒
通过这种方式,你可以在应用运行过程中根据需要调整动画的持续时间。
在HarmonyOS鸿蒙Next中,可以通过Animator类的setDuration()方法动态修改动画的持续时间。首先,创建一个Animator对象(如ObjectAnimator),然后调用setDuration()方法,传入新的时间值(以毫秒为单位)。最后,启动动画即可。示例代码如下:
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);
animator.setDuration(1000); // 设置动画时间为1000毫秒
animator.start(); // 启动动画
通过这种方式,可以灵活调整动画的持续时间。

