鸿蒙HarmonyOS(模糊图片的实现过程及触摸事件onTouch的使用方法)_harmonyos 触摸事件
- 本次开发中,需要使用到以下 :
2. onTouch触摸事件
- 下面将进行模糊相关接口的介绍:
- 下面将进行onTouch触摸事件的讲解:
onTouch
格式:onTouch(event: (event: TouchEvent) => void): T
说明:
T:返回当前组件
TouchEvent对象说明:
触摸事件的类型。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
全部手指信息。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
当前发生变化的手指信息。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
阻塞事件冒泡。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
阻止默认事件。
说明: 该接口仅支持部分组件使用,当前支持组件:Hyperlink。暂不支持异步调用和提供Modifier接口。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
注意:
TouchType下又包含以下几种:
- 详细的可以通过下面链接进行查看
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-events-touch-V5#touchobject%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8Ehttps://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-events-touch-V5#touchobject%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E
- 接下来就是对模糊不同接口的使用:
1. 使用backdropBlur为组件添加背景模糊
backdropBlur的主要作用是对内容的背景进行相关操作
效果如下:
代码如下:
@Entry@Componentstruct Index{ build() { Column({ space: 10 }) { Text(\'backdropBlur\') .width(\'90%\') .height(\'90%\') .fontSize(20) .fontColor(Color.White) .textAlign(TextAlign.Center) .backdropBlur(10)// 对背景进行模糊,括号里面的值就代表模糊程度 .backgroundImage($r(\'app.media.fengjing\')) //这里更换成自己的图片 .backgroundImageSize({ width: 400, height: 300 }) } .width(\'100%\') .height(\'50%\') .margin({ top: 20 }) }}
2. 使用blur为组件添加内容模糊
blur的主要作用跟backdropBlur恰恰相反,它是对内容的进行模糊操作
注意:blur和backdropBlur不要搞混。一个是对内容操作,一个是对内容背景操作
效果如下:
代码如下:
@Entry@Componentstruct Index{ @State radius: number =0 @State text : string = \'\'; @State y:string = \'手指不在屏幕上了\'; aboutToAppear(): void { this.text =\"按住屏幕上下滑动\\n\" + \"当前手指所在y轴位置,\" + this.y + \"\\n\" + \"当前图片模糊程度为:\"+this.radius } build() { Column() { Text(this.text) .height(200) .fontSize(20) .fontWeight(FontWeight.Bold) Image($r(\'app.media.fengjing\')) .width(\'100%\') .height(\'100%\') .objectFit(ImageFit.Cover) .blur(this.radius) //这里通过调用定义好的radius,进行数据的实时刷新 }.height(\'100%\') .width(\'100%\') //使用onTouch触摸事件进行监听,渲染 .onTouch((event?: TouchEvent) => { if (event) { if (event.type === TouchType.Move) { // 直接获取原始y坐标数值并保留两位小数 const rawY = event.touches[0].y; this.y = rawY.toFixed(2); // y坐标显示两位小数 this.radius = Number((rawY / 10).toFixed(2)); // 计算并保留两位小数 } if (event.type === TouchType.Up) { this.radius = 0; // 重置为数值0 this.y = \'手指离开屏幕\'; } } this.text = \"按住屏幕上下滑动\\n\" + \"当前手指所在y轴位置:\" + this.y + \"\\n当前图片模糊程度为:\" + this.radius.toFixed(2); }) }}
其他的接口就不进行一一演示了,详细的请点击下面的链接进行查看:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-blur-effect#%E4%BD%BF%E7%94%A8backdropblur%E4%B8%BA%E7%BB%84%E4%BB%B6%E6%B7%BB%E5%8A%A0%E8%83%8C%E6%99%AF%E6%A8%A1%E7%B3%8Ahttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-blur-effect#%E4%BD%BF%E7%94%A8backdropblur%E4%B8%BA%E7%BB%84%E4%BB%B6%E6%B7%BB%E5%8A%A0%E8%83%8C%E6%99%AF%E6%A8%A1%E7%B3%8A