运动模糊
设置组件由缩放大小或位移变化引起的运动过程中的动态模糊效果。需要与动画的AnimateParam的onFinish参数配合使用。
说明:
从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
motionBlur
motionBlur(value: MotionBlurOptions)
在当前组件由缩放大小或位移变化引起的运动过程中,增加动态模糊效果。
1、不建议在组件内转场、共享元素转场、组件内隐式元素转场、粒子动画场景下使用该属性,否则会有非预期效果。
2、该属性需要在开始状态将motionBlur的参数radius设置为0,否则冷启动时会有非预期效果。
3、该属性需要与动画的AnimateParam的onFinish参数配合使用,需要在运动模糊动画结束后将motionBlur的参数radius置为0,否则会有非预期效果。
4、在使用该属性过程中,不要在使用过程中频繁更改同一个组件的模糊半径,否则会有非预期效果。比如示例中的动画,频繁点击会出现模糊效果偶尔失效的情况。
5、运动模糊锚点坐标需要与动画缩放的锚点保持一致,否则会有非预期效果。
6、模糊半径建议设置1以内,否则会有非预期效果。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
value | MotionBlurOptions | 是 | 定义运动模糊参数。 |
MotionBlurOptions对象说明
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
radius | number | 是 | 模糊半径,取值范围[0.0, ∞),建议设置1.0以内。 |
anchor | MotionBlurAnchor | 是 | 运动模糊锚点坐标。运动模糊锚点坐标设置时需要与动画缩放的锚点保持一致设置。 |
MotionBlurAnchor对象说明
名称 | 类型 | 必填 | 说明 |
---|---|---|---|
x | number | 是 | 锚点坐标x值,取值范围[0.0, 1.0]。 |
y | number | 是 | 锚点坐标y值,取值范围[0.0, 1.0]。 |
示例
属性动画状态下添加运动模糊效果。
// xxx.ets
import curves from '@ohos.curves';
@Entry
@Component
struct motionBlurTest {
@State widthSize: number = 400
@State heightSize: number = 320
@State flag: boolean = true
@State radius: number = 0
@State x: number = 0
@State y: number = 0
build() {
Column() {
Column() {
Image($r('app.media.testImg'))
.width(this.widthSize)
.height(this.heightSize)
.onClick(() => {
this.radius = 5;
this.x = 0.5;
this.y = 0.5;
if (this.flag) {
this.widthSize = 100;
this.heightSize = 80;
} else {
this.widthSize = 400;
this.heightSize = 320;
}
this.flag = !this.flag;
})
.animation({
duration: 2000,
curve: curves.springCurve(10, 1, 228, 30),
onFinish: () => {
this.radius = 0;
}
})
.motionBlur({ radius: this.radius, anchor: { x: this.x, y: this.y } })
}
}.width('100%').margin({ top: 5 })
}
}
ts