精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

HarmonyOS NEXT體驗官#聊天UI效果與簡單AI接口調用

系統 OpenHarmony
想嘗試簡單寫一個聊天頁面調用模型,嘗試下語法方面有什么變化,然后發現很簡單的聊天UI,盡然會有這么多坑,害!話不多說開干!

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發者社區

https://ost.51cto.com

鴻蒙發展的真快呀,半年前還在用api9,現在直接api12了。下載新的模擬機時發現,DevEcoStudio都從3.1下載到了現在的5.0了,這算不算見證了它的成長呢,哈哈。

想嘗試簡單寫一個聊天頁面調用模型,嘗試下語法方面有什么變化,然后發現很簡單的聊天UI,盡然會有這么多坑,害!話不多說開干!

一、滾動聊天區域

想想一個聊天區域無非就是一個滾動列表判斷一下然后彈性布局左右對齊,太簡單了,使用Scroll這個可滾動的容器組件,將消息列表遍歷一下,單獨定義消息的左右對齊,完事!

這時出現了第一個不好控制的效果,當對話少無法占滿滾動區域大小盡然是默認居中!

當子組件的布局尺寸超過父組件的尺寸時,內容才可以滾動,翻了會官網文檔沒找到Scroll內元素向上對齊的方法。

只好動用空空的腦袋想一想了:

  • 對話少時,子組件的布局尺寸小于父組件的尺寸無法滾動,默認居中對齊。
  • 對話多時超過父組件的尺寸可以滾動,滾動是不是就能上對齊了!

想到就干:設置子組件最小長度為Scroll容器長度。

.constraintSize({minHeight:"100%"})

可以!(可以是可以哈,后續一個bug,好像就這樣玩出來的 TAT )。

// 聊天內容區域
Scroll() {
  Column(){
    ForEach(this.messages, (item: message) => {
      Flex({justifyContent: item.role === 'user' ? FlexAlign.End : FlexAlign.Start}) {
        if (item.role === 'user') {
          ItemComponent(item, true)   // 自己發送的消息
        } else {
          ItemComponent(item, false)  // 對方發送的消息
        }
      }
    })
  }
  .constraintSize({minHeight:"100%"})	// 設置子組件最小長度為Scroll容器長度
}
.width("100%")
.height("90%")
.scrollBar(BarState.Off)

二、消息左右對齊與傳輸數據格式

1、消息如何設置左右對齊

是我的消息我就放右邊,不是我的就放左邊,判斷判斷。

這里可以用if非常好,那就簡單了,來個參數告訴我這條消息是不是自己的,然后:

  • Flex布局容器 里面用三目運算符設置對齊方式,可以吧。
  • 頭像左右不好控制用if控制其顯示,是不是很方便。

最后就是顏色,大小,樣式的調整了,沒啥美感就這樣了,開擺。

//渲染消息
@Builder
function ItemComponent(item: message, isSelf: boolean) {
  Flex({ justifyContent:isSelf ? FlexAlign.End : FlexAlign.Start}) {
    if(!isSelf) {
      Image($r("app.media.chatbot"))
        .width("50vp")
    }
    Text(item.content)
      .fontSize(16)
      .lineHeight(24)
      .backgroundColor(isSelf ? '#ffdddd' : '#ddffdd') // 根據發送者設置背景色
      .padding({ top: 8, bottom: 8, left: 10, right: 10 })
      .borderRadius(10)
      .textAlign(TextAlign.Start)
      .constraintSize({maxWidth: "240vp"})	// 設置最大寬度

    if(isSelf) {
      Image($r("app.media.me"))
        .width("50vp")
    }
  }
  .margin({ top: 4, bottom: 4 }) 	// 消息間距
}

2、傳輸數據格式

  • 因為要知道是誰發的消息就記錄了一下角色,對比了一下QQ,想到昵稱盡然沒有,等待后續加工中…
  • 寫到json格式的數據,需要取返回消息的一個值,HarmonyOS next不在支持any了,語法檢查有點嚴格哈,只好自定義類型了。
    需要哪個字段定義哪個好像也行,偷懶不可取哦。
  • 因為接口調用要將全部上下文消息整體發送過去,所以定義了個messages數組,還可以forearch展示用的也是這個數組。
// 發送的每條消息類型
class message{	
  role: string;		// 發送角色
  content: string;	// 發送的消息	
    				// 如有更多需求,如:發消息人物昵稱,可進行相應的設計
  constructor(role: string,  content: string) {
    this.role = role
    this.content = content
  }
}

// 根據ai反回的數據類型定義的接口類型,next不支持any類型
interface userInfo{
  id: string,
  object: string,
  created: string,
  result: string
  is_truncated: boolean,
  need_clear_history: boolean,
  finish_reason: string
}


// @State數據與頁面雙向數據綁定,當消息增加時頁面刷新顯示
@State messages: Array<message> = [
    new message("user","你好"),
    new message("assistant", "你好,請問有什么我可以幫助你的嗎?無論你有什么問題或需要幫助,我都會盡力回答和協助你。請隨時告訴我你的需求。")
];

三、輸入框和發送

這里有個bug很難受,各位大佬,求評論,救救 TAT。

一個輸入框,一個按鈕發送,用預覽器調試挺方便的,然后到了模擬機有個叫 鍵盤 的東東沒考慮到。

這個東西盡然會把,消息給頂上去!消息少時就輸入鍵盤一跳出來就白白了 (看不到消息了)。

研究了一下微信,消息少時輸入時消息是頂格的,消息多時輸入消息看到的最下放時最新消息,也就滾動到了看的見最下方。

嘗試解決:

  • 翻動我’‘可愛’'的官方文檔 找到一個叫 Scroller 的可滾動容器組件的控制器,當它按下時,獲取當前消息區域滾動條的位置,當它抬起時,讓它回到按下時的位置,無效
  • 搜索其他語言解決辦法:vue聊天頁面在進入之后信息滑動到底部位置 然后還是翻動我’‘可愛’'的官方文檔,不知道該怎么搜索,沒找到相應的函數
  • 求救
// 可滾動的容器組件,當子組件的布局尺寸超過父組件的尺寸時,內容可以滾動。
myScroll: Scroller = new Scroller();
locat: OffsetResult = {xOffset: 0, yOffset: 0};

// 輸入框和發送按鈕
Row() {
  TextInput({ text: this.inputText, placeholder: '輸入你想詢問的問題' })
    .height(40)
    .width("70%")
    .onChange((val) => {
      this.inputText = val
    })
    .margin({right: 2})
    .onClick(() => {
      this.locat = this.myScroll.currentOffset();
    })
    .onEditChange((isEditing) => {
      if(isEditing) {
        this.myScroll.scrollTo(this.locat);
      }
    })
  Button('發送')
    .onClick(() => {
      // 發送消息并更新UI
      this.messages.push(new message("user", this.inputText))
      this.inputText = ''
      getTake(this.messages, this.token).then((response: AxiosResponse<userInfo>) =>{
        let text = response.data.result
        this.messages.push(new message("assistant", text))
      })
    })
}
.justifyContent(FlexAlign.Center)
.height("10%")

四、AI接口調用

這個我會,我會使用axios,突然想到新版不知道能不能用,證明結果:axios已經適配鴻蒙HarmonyOS NEXT。

OpenHarmony三方庫中心倉 axios。

import axios, {AxiosResponse} from '@ohos/axios'

這里調用的是文興一言模型,要調用什么ai可查看其開發文檔。

const apiKey = "xxxxxx"
const secret = "xxxxxxxxxxx"

// 根據apikey和secret獲取token
export function get_access_token(){
  return axios.post(`/oauth/2.0/token?grant_type=client_credentials&client_id=${apiKey}&client_secret=${secret}`)
}
// 根據token和所有消息發送一次請求,獲取結果
export function getTake(messages: Array<message>, token: string): Promise<AxiosResponse>{
  const params =  JSON.stringify({
    messages: messages
  })
  return axios.post(`/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions_pro?access_token=${token}`, params)
}

同時HarmonyOS next 內置了很多AI服務哦。

:textToSpeech (文本轉語音) import { textToSpeech } from '@kit.CoreSpeechKit'; objectDetection(多目標識別)import { visionBase, objectDetection } from '@kit.CoreVisionKit;等。

具體查看官方文檔:AI | 華為開發者聯盟 (huawei.com)

五、總結

果然手搓UI界面得:先設計,懂布局。
換句話說:創建UI界面時,首要步驟是進行精心的設計,其次則需要深入理解并掌握布局技巧。

HanmonyOS next入門很簡單,但最好一個產品很不容易,歡迎來一起學習。

最后附上效果圖和源碼地址:

效果圖

目錄結構

源碼地址

源碼:https://atomgit.com/leaf-domain/chatUI。

openharmony最新開發文檔:https://docs.openharmony.cn/pages/v5.0/zh-cn/device-dev/quick-start/quickstart-overview.md。

最新工具:https://developer.huawei.com/consumer/cn/download。

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發者社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 鴻蒙開發者社區
相關推薦

2024-07-31 09:46:13

2024-07-26 16:17:22

2009-06-05 09:24:53

struts標簽jsp

2023-11-18 10:24:50

微軟WindowsAI

2023-07-06 22:04:14

?WPS AI

2012-08-10 09:22:38

CoronaCorona SDKCorona SDK游

2015-08-06 16:23:04

iosxmpp聊天

2023-08-15 12:47:49

人工智能微軟GPT-4

2023-08-15 09:33:11

微軟人工智能聊天

2023-03-16 08:14:57

2021-01-25 09:58:01

鴻蒙HarmonyOS應用開發

2017-08-07 11:34:06

互聯網

2024-04-09 13:52:49

接口AI電商

2013-05-17 15:28:18

2010-06-21 10:13:03

Ubuntu 10.1

2023-05-20 11:17:05

必應聊天微軟

2024-06-14 14:55:24

AI機器人UI
點贊
收藏

51CTO技術棧公眾號

九一精品久久久| 久久综合九色综合欧美狠狠| 老司机精品久久| 亚洲天堂男人天堂女人天堂| 国产精品久久久亚洲| 亚洲天堂小视频| www.久久热.com| 高清精品视频| 亚洲天堂福利av| 国产精品美女呻吟| 欧美激情国产精品免费| 电影91久久久| 国产精品日日摸夜夜摸av| 国产91精品久久久久久| 国产高清999| 免费观看在线午夜影视| 米奇777在线欧美播放| 精品奇米国产一区二区三区| 永久免费看av| 亚洲影院一区二区三区| 国产日产一区| 欧美性猛交xxxxx水多| 粉嫩精品一区二区三区在线观看| 五月天av网站| 国产精品1区| 日韩欧美一区二区三区久久| 99re8这里只有精品| 91精品国产乱码久久| 久久久久久久久久久妇女| 欧美精品在线一区二区| 在线观看免费91| 91av久久久| 久久久久久久波多野高潮日日| 九九久久久久99精品| 免费欧美一级片| 国产拍在线视频| 大白屁股一区二区视频| 日韩在线观看免费高清| 色啦啦av综合| 26uuu亚洲电影在线观看| 国产美女精品人人做人人爽| 亚洲片在线观看| 免费日韩中文字幕| yw在线观看| 2023国产精品视频| 亚洲精品高清在线观看| 99热99热| 精品免费囯产一区二区三区| 国产精品亚洲人成在99www| 精品日韩一区二区三区| 国产又黄又嫩又滑又白| 国产精品麻豆| 91精品国产乱| 欧美v在线观看| 99精品老司机免费视频| 国产乱国产乱300精品| 成人福利视频在线观看| 精品少妇久久久久久888优播| 日本一道高清一区二区三区| 在线观看欧美日本| 日本黄色a视频| 人妻91麻豆一区二区三区| 久久久精品午夜少妇| 欧美亚洲国产日本| 欧美日韩乱国产| 亚洲国产精品日韩专区av有中文| 日韩中文字幕免费视频| 亚洲精品一区二区三区在线播放| 视频一区日韩精品| 色综合中文字幕| 国产盗摄视频在线观看| 操你啦视频在线| 91蜜桃婷婷狠狠久久综合9色| 国产精品爽黄69天堂a| 国产网站在线看| 天天做天天爱天天爽综合网| 日韩www在线| 欧美在线a视频| 亚洲成人黄色| 亚洲成人精品久久久| gogogo高清免费观看在线视频| 欧美黄页在线免费观看| 欧美日韩亚洲成人| 欧美三级午夜理伦三级老人| 18av在线播放| 黄色成人av在线| 91大学生片黄在线观看| 草草在线观看| 欧美视频自拍偷拍| 亚洲成熟丰满熟妇高潮xxxxx| 免费在线观看一区| 懂色av影视一区二区三区| 日韩av资源在线| 狠狠操一区二区三区| 91国在线观看| 任你操这里只有精品| 欧美天堂一区| 亚洲二区中文字幕| 青青青视频在线免费观看| 精品一区免费| 亚洲欧美国产视频| 性欧美丰满熟妇xxxx性久久久| 亚洲高清在线一区| 亚洲视频在线观看网站| 免费视频一二三区| 日本怡春院一区二区| 国产91在线播放精品91| 亚洲婷婷综合网| 亚洲影院免费| 热99精品只有里视频精品| 青青草免费观看视频| 精品午夜久久福利影院| 国产欧美精品xxxx另类| 婷婷五月综合久久中文字幕| 99久精品国产| 欧美xxxx黑人又粗又长精品| 亚洲色欧美另类| 91麻豆精品在线观看| 在线成人性视频| 成人欧美magnet| 日本丶国产丶欧美色综合| 亚洲成年人av| 日韩精品免费一区二区夜夜嗨 | 伊人伊成久久人综合网站| 熟女少妇一区二区三区| 精品一区三区| 久久久久久18| 九九热国产视频| 一区二区自拍| 97精品国产97久久久久久免费| 日韩视频免费观看高清| 久久国产主播| 好吊色欧美一区二区三区视频| 姝姝窝人体www聚色窝| 国产精品福利电影一区二区三区四区| 偷拍盗摄高潮叫床对白清晰| 日韩高清成人| 91精品国产91久久久久久一区二区| 成人精品在线观看视频| jvid福利在线一区二区| 久久精品视频在线| 国产亚洲精久久久久久无码77777| 蜜臀av在线播放一区二区三区| 91麻豆桃色免费看| 欧美 日韩 综合| 亚洲欧美日韩国产综合| 欧美精品一区二区三区三州| 一区二区电影免费观看| 亚洲国语精品自产拍在线观看| xxxxx在线观看| 久久中文字幕av| 久久久亚洲网站| 无码aⅴ精品一区二区三区| 极品美女销魂一区二区三区| 日韩欧美99| 99久久精品免费观看国产| 欧美精品一二三区| 久久午夜精品视频| 激情综合自拍| 国产区二精品视| 91九色在线porn| 欧美日韩精品欧美日韩精品一综合| 无码国产精品久久一区免费| 九九久久成人| 国产精品69精品一区二区三区| 国产富婆一级全黄大片| 国产午夜三级一区二区三| 一二三四中文字幕| 亚洲乱码一区| xxxx性欧美| 国产成a人亚洲精v品无码| 一区二区三区不卡在线观看| 黄色三级视频在线| 国产精品chinese在线观看| 久久久久亚洲精品国产 | 精品亚洲一区二区三区| 欧美手机在线观看| 国产日韩欧美| 91亚色免费| 在线免费观看黄| 日韩午夜在线影院| 在线免费看视频| 国内精品免费**视频| 国产成人永久免费视频| 国产成人视屏| 亚州欧美日韩中文视频| 国产乱理伦片a级在线观看| 精品久久中文字幕久久av| 一级性生活毛片| 精品无人区卡一卡二卡三乱码免费卡| 成年人视频大全| 天堂在线精品| 91亚洲va在线va天堂va国| 色网在线免费观看| 亚洲国产精品va在看黑人| 樱花视频在线免费观看| 久久视频一区二区| 在线视频一二区| 国产亚洲欧洲| 欧美一级爱爱视频| 欧美经典一区| 欧美日韩成人在线观看| 你懂的免费在线观看| 欧美日韩国产精品一区二区不卡中文| 亚洲国产av一区| 处破女av一区二区| 激情黄色小视频| 亚洲综合社区| 国产真实老熟女无套内射| 国产精品22p| 国产在线观看精品一区二区三区| 97电影在线看视频| 亚洲国产福利在线| 国产精品一区二区人人爽| 日韩码欧中文字| 中文字幕日韩久久| 久久字幕精品一区| 国产 日韩 亚洲 欧美| 美女视频亚洲色图| 日av在线播放中文不卡| 欧美女同一区| 日韩黄色高清视频| 性生活免费网站| 天天操天天色综合| 一区二区成人免费视频| 中文字幕免费在线观看视频一区| 三上悠亚在线一区二区| 久久精品亚洲人成影院| 欧洲精品在线一区| 国产精品国产亚洲精品| 国产精品久久久久久久久免费| 麻豆国产在线| 97香蕉超级碰碰久久免费软件 | 91sa在线看| 国产在线一二三| 欧美日韩国产美| 无码人妻久久一区二区三区| 精品国产31久久久久久| 四虎成人精品永久免费av| 一区二区免费视频| 婷婷色中文字幕| 91免费看视频| 波多野结衣视频播放| 日韩影院在线观看| 国产精品88久久久久久妇女 | dy888午夜| 五月天综合网站| 男女啪啪的视频| 亚洲女同另类| 久久精品人成| 91精品一久久香蕉国产线看观看 | 国产免费无码一区二区视频| 亚洲免费资源在线播放| www.99re7| 亚洲一线二线三线久久久| 黄色a一级视频| 91在线云播放| 成年人在线免费看片| 国产黄色精品视频| 熟女少妇精品一区二区| 红桃视频国产精品| 亚洲一区尤物| 丝袜美腿综合| 秋霞毛片久久久久久久久| 欧美午夜精彩| 欧美黄色直播| 超碰精品在线观看| 国产精品一区专区欧美日韩| 农村妇女一区二区| 91九色极品视频| 欧美亚洲tv| 天天好比中文综合网| 红杏一区二区三区| 欧美精品在线一区| 99久久综合| 人人妻人人做人人爽| 丝袜诱惑亚洲看片 | 岛国av在线一区| 永久免费看mv网站入口78| 国产精品综合一区二区| 韩国av中国字幕| 国产亚洲美州欧州综合国| 国产黄色小视频网站| 亚洲大片免费看| 欧美精品成人久久| 一本色道久久加勒比精品 | 奇米精品一区二区三区在线观看 | 加勒比成人在线| 三级欧美在线一区| 污污视频在线免费| 99久久国产综合精品女不卡| 日本不卡一区视频| 午夜伊人狠狠久久| 久久久精品99| 日本黄色一区二区| 亚洲精品97久久中文字幕无码| 亚洲美女在线看| 亚洲羞羞网站| 久久91亚洲人成电影网站| 午夜激情在线播放| 欧美一级大片在线观看| 在线不卡一区| 欧美国产一区二区在线| 你懂的成人av| 超碰超碰超碰超碰超碰| 首页欧美精品中文字幕| 国产高潮失禁喷水爽到抽搐 | 久久精品美女视频| 欧美另类z0zxhd电影| 四虎影院在线播放| 日韩电影中文字幕在线观看| 幼a在线观看| 日韩网站在线观看| 亚洲黄色中文字幕| 99r国产精品视频| 欧美gvvideo网站| 成年人免费大片| 99久久久免费精品国产一区二区| 国产激情视频网站| 亚洲精品免费播放| 一区二区三区日| 亚洲性日韩精品一区二区| 九色porny自拍视频在线播放 | 毛葺葺老太做受视频| 99热精品一区二区| 欧美成人黄色网| 7777精品伊人久久久大香线蕉经典版下载 | 久久精品三级视频| 激情成人中文字幕| 亚洲a视频在线观看| 欧美巨大黑人极品精男| 国产精品久久久久久吹潮| 国产精品永久免费观看| 亚洲另类春色校园小说| 欧洲成人一区二区| 免费国产自线拍一欧美视频| 在线观看免费视频黄| 久久久影视传媒| 亚洲第一页av| 激情久久av一区av二区av三区| 成人激情四射网| 亚洲欧美中文日韩在线v日本| 超碰在线99| 国产一区二区中文字幕免费看| 欧美视频四区| 亚洲无吗一区二区三区| 久久精品一区二区三区四区| 精品久久久久久久久久久久久久久久| 亚洲国产女人aaa毛片在线| av色在线观看| 国产精品三级美女白浆呻吟| 精品大片一区二区| 国产小视频精品| youjizz国产精品| 日韩女同强女同hd| 精品视频在线播放免| 在线观看爽视频| 日韩精品无码一区二区三区| 日本不卡一区二区三区| 美女av免费看| 制服丝袜亚洲精品中文字幕| 香蕉成人app免费看片| 国产精品毛片一区视频| 久久中文亚洲字幕| 三级黄色片免费看| 国产精品污www在线观看| 怡春院在线视频| 日韩电影网在线| 国产日韩电影| 在线观看福利一区| 成人小视频在线| 日批视频免费在线观看| 久久精品国产清自在天天线| 亚洲日本va午夜在线电影| 1024av视频| 成人av电影免费观看| 欧美做爰爽爽爽爽爽爽| 精品久久久久香蕉网| 中文字幕在线高清| 一区二区三区不卡在线| 国产不卡免费视频| 欧美丰满熟妇bbbbbb| 亚洲国产成人精品久久久国产成人一区| 亚洲同志男男gay1069网站| 亚洲国产日韩综合一区| 免费精品视频| 黄色录像二级片| 日韩精品在线私人| 日本午夜精品久久久久| 先锋影音一区二区三区| 国产另类ts人妖一区二区| 国产精品人人人人| 久久久国产精品免费| 久久久久97| 夜夜夜夜夜夜操| 日韩欧美成人区| 手机av免费在线| 午夜精品区一区二区三| 成人激情免费网站| 在线观看一二三区|