HarmonyOS 鸿蒙Next 如何实现一个气泡聊天框

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何实现一个气泡聊天框

有一段文字,或图片,或图文混排的。背景是个.9图的气泡图 
 

3 回复

你尝试下这个方案

[@Builder](/user/Builder)

function BubbleBackground() {

  Image($r('app.media.bg_toast_login'))

    .objectFit(ImageFit.Fill)

    .resizable({

      slice: {

        left: 10,

        right: 6,

        top: 10,

        bottom: 10

      }

    })

    .width("100%")

    .height("100%")

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct Index {

  build() {

    Row() {

      // 布局

      Column() {

        Text("测试测试测试测试测试测试测试测试测试测试\nfasdfasdfadfasdfasdf")

          .fontColor(Color.White)

      }

      .padding(10)

      .background(BubbleBackground)

      .margin({

        left:30

      })

    }

    .height('100%')

  }

}

更多关于HarmonyOS 鸿蒙Next 如何实现一个气泡聊天框的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


Image组件已经提供了与点九图相同功能的API设置,可以通过设置resizable属性来设置ResizableOptions,也就是图像拉伸时可调整大小的图像选项。ResizableOptions的参数slice中有top、left、bottom和right四个属性,分别代表图片上下左右四个方向拉伸时保持不变距离。

参考代码如下:

import { MeasureText } from '[@kit](/user/kit).ArkUI' 

[@Entry](/user/Entry) 
[@Component](/user/Component) 
struct ChatBubbleStretchDemo { 
 [@State](/user/State) text: string = 'Hello World Hello World Hello World Hello World'; 
 [@State](/user/State) left: number = 10; 
 [@State](/user/State) right: number = 10; 
 [@State](/user/State) top: number = 10; 
 [@State](/user/State) bottom: number = 10; 
 [@State](/user/State) line: number = 2; 
 [@State](/user/State) textSize: SizeOptions = MeasureText.measureTextSize({ 
   textContent: this.text 
 }); 

 build() { 
   Column() { 
     Stack() { 
       Image($r("app.media.lightBluexhdpi")) 
         .width(px2vp(Number(`${this.textSize.width}`)) < 350 ? 60 + px2vp 
         (Number(`${this.textSize.width}`)) : 350) 
         .height(this.text.length < 40 ? 50 + px2vp(Number(`${this.textSize.height}`))  
         : 50 + (px2vp(Number(`${this.textSize.height}`)) * this.line)) 
         .resizable({ 
           slice: { 
             top: this.top, 
             left: this.left, 
             bottom: this.bottom, 
             right: this.right 
           } 
         }) 
       Text(this.text) 
     } 
     .width(350) 
     .height(200) 
   } 
   .height('100%') 
   .width('100%') 
 } 
}

正常大小

左右拉伸

多行上下左右拉伸

HarmonyOS(鸿蒙)Next 实现气泡聊天框功能,通常涉及UI组件的自定义以及系统权限的获取和使用。以下是一个基本实现思路:

  1. UI组件设计

    • 使用Canvas或Composition API绘制气泡形状。
    • 定义聊天框的布局,包括文本输入框、消息列表等。
    • 自定义气泡聊天框的动画效果,如弹出、消失等。
  2. 系统权限获取

    • 气泡聊天框通常需要悬浮窗权限,确保在应用中请求并获取该权限。
    • 检查系统版本,不同版本的鸿蒙系统可能对悬浮窗权限的管理有所差异。
  3. 实现逻辑

    • 监听消息接收事件,当有新消息时,创建并显示气泡聊天框。
    • 处理用户交互,如点击气泡聊天框进行回复或关闭。
    • 优化性能,确保气泡聊天框的显示和隐藏不会造成应用卡顿。
  4. 测试与调试

    • 在不同设备和系统版本上测试气泡聊天框的功能和兼容性。
    • 调试UI组件的绘制和动画效果,确保气泡聊天框的显示效果符合预期。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部