ArkUI类微信语音消息

前言

UI:整体是Column布局,然后用Blank()组件将操作栏置底,图标设置了手势组(长按以及滑动,并将两个手势设置为parallel,表示可以并发执行),此外UI有些冗余
TS:用一个isShow表示是否需要弹出操作栏,用bottomHeight和bottomWidth存储底部操作栏的高度和宽度,定义一个枚举类,里面的枚举值用来表示不同的状态,当长按和滑动的时候,使用gesture的属性方法注册事件

效果

长按语音代码后图片更换,然后弹出取消和转文字按钮,同时移动鼠标,靠近哪个操作区,哪个操作区就会变大
UI很丑,纯学习
在这里插入图片描述

代码

// 添加 枚举类型,用于识别 当前手势位置
enum SelectedType{
  DELETE, // 取消时
  TEXT,// 转文本
  VOICE // 语音发送
}
@Entry
@Component
struct GestureDemoPage {
  @State message: string = 'Hello World';
  @State statue:SelectedType = SelectedType.VOICE
  @State isShow:boolean = false
  bottomWidth:number = 0
  bottomHeight:number = 0

  build() {
    Column(){
      Column(){}
        .layoutWeight(1)
      if (this.isShow){
         Column(){
            Row(){
              Text('X')
                .fontSize(40)
                .backgroundColor(Color.Orange)
                .width(60)
                .height(60)
                .textAlign(TextAlign.Center)
                .borderRadius('50%')
                .rotate({angle:-45})
                .scale({
                  x:this.statue === SelectedType.DELETE?1.2:1,
                  y:this.statue === SelectedType.DELETE?1.2:1
                })
              Text('文')
                .fontSize(40)
                .backgroundColor(Color.Orange)
                .width(60)
                .height(60)
                .textAlign(TextAlign.Center)
                .borderRadius('50%')
                .rotate({angle:45})
                .scale({
                  x:this.statue === SelectedType.TEXT?1.2:1,
                  y:this.statue === SelectedType.TEXT?1.2:1
                })
            }
            .width('70%')
            .height(100)
            .justifyContent(FlexAlign.SpaceAround)
            .animation({
              duration:1000,
              curve:Curve.Linear
            })
            Row(){
              Image(this.isShow?$r("app.media.microphone_on"):$r('app.media.microphone'))
                .width(50)
            }
            .backgroundColor('#ff484646')
            .width('100%')
            .justifyContent(FlexAlign.Center)
            .height(100)
           .onAreaChange((oldValue,newValue)=>{
             // console.log(JSON.stringify(newValue))
             //获取底部组件的高度和宽度并且赋给全局的变量
             this.bottomHeight = newValue.height as number
             this.bottomWidth = newValue.width as number
           })
          }
          .width('100%')
          .height(200)
        .backgroundColor('#ccc')
      }else {
        Row(){
          Image(this.isShow?$r("app.media.microphone_on"):$r('app.media.microphone'))
            .width(50)
            .gesture(
              GestureGroup(
                GestureMode.Parallel,//同时识别
                //longPress
                LongPressGesture().onAction(()=>{
                  this.isShow = true
                }).onActionEnd(()=>{
                  this.isShow = false
                }),
                PanGesture().onActionUpdate((event)=>{
                  let x = event.fingerList[0].globalX
                  let y = event.fingerList[0].globalY
                  // console.log(`x:${x},y:${y}`)
                  if (y>780-this.bottomHeight) {
                    this.statue = SelectedType.VOICE
                  }else if(x<this.bottomWidth/2){
                    this.statue = SelectedType.DELETE
                  }else {
                    this.statue = SelectedType.TEXT
                  }
                })
              )
            )
        }
        .width('100%')
        .height(100)
        .justifyContent(FlexAlign.Center)
      }
    }
    .height('100%')
    .width('100%')
    .backgroundColor('#fff')
    .justifyContent(FlexAlign.End)
    .onAreaChange((oldValue,newValue)=>{
      //测试整个预览器的height和width
      // console.log('line110',JSON.stringify(oldValue))
      // console.log('line111',JSON.stringify(newValue))
    })
  }
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的公寓报修管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本公寓报修管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此公寓报修管理系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。公寓报修管理系统有管理员,住户,维修人员。管理员可以管理住户信息和维修人员信息,可以审核维修人员的请假信息,住户可以申请维修,可以对维修结果评价,维修人员负责住户提交的维修信息,也可以请假。公寓报修管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:公寓报修管理系统;Spring Boot框架;MySQL;自动化;VUE
对于微信语音消息发送的测试,可以考虑以下几个测试点: 1. 发送语音消息的功能是否正常:测试发送语音消息的功能是否可用,用户是否可以成功发送语音消息给其他用户。 2. 语音消息的录制和发送:测试录制语音消息的功能是否正常,包括录制时长、录制质量等方面。同时,也要测试发送录制好的语音消息是否可靠,并且能够在接收端正确播放。 3. 语音消息的格式支持:测试系统是否支持不同格式的语音消息,例如amr、mp3等常见的音频格式。 4. 语音消息的大小和时长限制:测试系统对于发送语音消息的大小和时长是否有限制,并且用户能否在限制范围内正常发送和接收语音消息。 5. 语音消息的兼容性:测试系统发送的语音消息是否可以在不同版本的微信客户端上正常播放,并且是否可以在不同操作系统(如iOS、Android)上正常使用。 6. 语音消息发送失败的处理:测试在发送语音消息过程中可能出现的异常情况,例如网络连接中断、存储空间不足等,系统是否能够正确处理并给出相应的提示。 7. 语音消息的安全性:测试系统对于语音消息的传输和存储过程中是否有合适的加密措施,以保证用户的语音消息不会被非法获取或篡改。 8. 语音消息的清晰度和声音质量:测试发送和接收的语音消息在播放过程中的清晰度和声音质量是否符合用户的期望,避免出现杂音、失真等情况。 以上是一些常见的测试点,你可以根据具体需求和产品的特性进行相应的测试设计和执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值