精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美一区二三区| 日韩视频免费直播| 亚洲电影网站| 国产色片在线观看| 久久人人88| 欧美日韩精品久久久| 中日韩在线视频| 亚洲va久久久噜噜噜无码久久| 中文字幕一区二区三区久久网站| 正在播放亚洲一区| 国产日韩欧美精品在线观看| 九色在线免费| 国产精品一二三在| 欧美孕妇与黑人孕交| www.4hu95.com四虎| 91麻豆精品激情在线观看最新| 精品久久久久久久久久久久久| 午夜精品一区二区三区在线观看| 国产高中女学生第一次| 欧美亚洲免费| 久久综合色88| 久久成人激情视频| 日本成人精品| 欧美午夜精品电影| 精品无码一区二区三区在线| 北岛玲一区二区三区| 成人一区在线观看| 成人国产精品日本在线| 中国一级特黄毛片| 国产精品v日韩精品v欧美精品网站 | 在线观看日韩精品视频| 四虎影视国产精品| 欧美日韩免费网站| 日韩a级黄色片| 国内精品在线视频| www.久久久久久久久| 国产日韩在线一区| 秋霞精品一区二区三区| 午夜日韩电影| 久久精彩免费视频| 久久久久久久久福利| 欧美aaaaa级| 日韩欧美国产电影| 成年人三级黄色片| 高清欧美日韩| 在线精品视频一区二区| 妞干网在线视频观看| 超碰人人在线| 国产精品九色蝌蚪自拍| 欧美三级华人主播| 污污视频在线免费看| 国产成人在线视频免费播放| 国产成人激情小视频| 国产一级生活片| 亚洲乱码免费伦视频| 一本色道久久综合狠狠躁篇怎么玩 | 国产探花在线免费观看| 日韩情爱电影在线观看| 尤物九九久久国产精品的分类| 大黑人交xxx极品hd| 动漫av一区| 精品国产一二三区| aaa黄色大片| 久久av偷拍| 欧美一二三四区在线| 欧美日韩一区二区区| 精品国产乱码一区二区三区| 欧美一区二区三区视频免费| 手机免费av片| 欧美黄视频在线观看| 91精品国产欧美一区二区成人| 亚洲最大天堂网| 综合欧美精品| 91精品国产一区二区三区蜜臀| 日本在线播放一区二区| 欧美午夜网站| 精品免费视频.| 日本少妇xxxx| 亚洲人成精品久久久 | 调教+趴+乳夹+国产+精品| 韩日视频在线观看| 在线毛片观看| 欧美色区777第一页| 手机av在线网| 77成人影视| 国产偷亚洲偷欧美偷精品| 亚洲人成人无码网www国产| 日韩免费一区| 欧美精品一二区| 国产无遮无挡120秒| 99在线精品视频在线观看| 欧美在线亚洲在线| 亚洲手机在线观看| 福利一区二区在线| 欧美国产一二三区| 精品自拍一区| 精品久久久中文| 91高清国产视频| 成人h动漫精品一区二区器材| 亚洲国产中文字幕在线观看| 性少妇bbw张开| 亚洲欧美综合久久久| 久久久天堂国产精品女人| 欧美在线观看不卡| 国产麻豆视频一区| 蜜桃999成人看片在线观看| 日韩伦理在线观看| 无吗不卡中文字幕| 亚洲黄色av片| 蜜桃成人av| 欧美老女人性视频| 免费在线观看av的网站| 丁香激情综合国产| 性刺激综合网| 国产高潮在线| 91精品国产综合久久久久久漫画 | 日韩成人精品一区二区三区| 亚洲精品一区二区三区99| 久久精品国产亚洲AV熟女| 欧美在线播放| 国产精品久在线观看| 亚洲高清视频网站| 国产精品高潮呻吟| 欧美色图另类小说| 伊人久久大香线蕉av超碰| 夜夜躁日日躁狠狠久久88av| 日韩成人一区二区三区| 精品一区二区三区在线播放视频| 精品欧美一区二区久久久伦| 老司机在线视频二区| 精品欧美aⅴ在线网站| 色姑娘综合天天| 欧美三级美国一级| 91av视频在线免费观看| 精品久久久无码中文字幕| 国产精品丝袜91| 色欲色香天天天综合网www| 成人四虎影院| 国产小视频91| 东京热一区二区三区四区| 成人福利视频在线看| 正在播放一区| www.一区| 国产亚洲aⅴaaaaaa毛片| 麻豆久久久久久久久久| 国产成人日日夜夜| 亚洲一区二三| 美女100%一区| 亚洲色图色老头| 久久国产视频播放| 2021中文字幕一区亚洲| 国产综合中文字幕| 精品无人区一区二区| 久久久噜噜噜久久久| www.香蕉视频| 亚洲最快最全在线视频| 超级砰砰砰97免费观看最新一期| 国产一区二区三区四区五区| 97人人做人人爱| 同心难改在线观看| 日韩欧美国产成人| 亚欧洲乱码视频| 日本人妖一区二区| 久久精品一区二区三区不卡免费视频 | 顶级黑人搡bbw搡bbbb搡| 热久久一区二区| 亚洲国产午夜伦理片大全在线观看网站| 性欧美又大又长又硬| 亚洲美女av在线| 欧美在线视频精品| 国产日韩精品一区| www.欧美日本| 成人女性视频| 国产日韩精品视频| 日本在线www| 欧美日韩国产影片| 成人一级黄色大片| 国产精品影视在线观看| 国产乱淫av片杨贵妃| 色爱综合av| 国产精品自拍网| 99在线视频观看| 亚洲第一区中文99精品| 日本在线播放视频| 欧美国产亚洲另类动漫| 亚洲va在线va天堂va偷拍| 欧美午夜影院| 欧美日韩国产精品一区二区| 全球最大av网站久久| 久久久精品电影| 少妇人妻偷人精品一区二区| 色综合色综合色综合 | 欧美人与拘性视交免费看| 国产日韩亚洲欧美| 黄色aa久久| 久久精品久久久久久国产 免费| 精品国产无码一区二区三区| 精品高清一区二区三区| 国产又粗又黄又猛| 国产东北露脸精品视频| 欧美日韩在线不卡视频| 五月激情综合| 久久久久se| 国产精品18| 热久久美女精品天天吊色| 免费av在线播放| 日韩av在线网| 国产欧美久久久精品免费| 婷婷久久综合九色综合伊人色| 免费看一级黄色| 99视频在线精品| 午夜视频在线观| 性色av一区二区怡红| 亚洲AV无码成人精品一区| 日韩av黄色在线| 7777奇米亚洲综合久久 | 国产成+人+综合+亚洲欧美丁香花| 免费在线毛片网站| 亚洲欧美成人精品| 亚洲乱熟女一区二区| 欧美日免费三级在线| 亚洲男人第一av| 亚洲一线二线三线视频| 貂蝉被到爽流白浆在线观看| 99在线热播精品免费| 三年中文在线观看免费大全中国| 香蕉成人久久| 国产一区二区三区小说| 五月精品视频| 亚洲制服中文| 日韩精品不卡一区二区| 蜜桃传媒视频第一区入口在线看| 日韩欧美久久| 成人写真福利网| 91久久久久久白丝白浆欲热蜜臀| 91成人在线视频| 99热99re6国产在线播放| 久久久久北条麻妃免费看| www.国产精品.com| 亚洲人成电影在线播放| 亚洲成熟女性毛茸茸| 7777精品伊人久久久大香线蕉超级流畅 | 欧美绝顶高潮抽搐喷水合集| 91夜夜未满十八勿入爽爽影院| 日韩精品免费观看视频| 欧美一级视频一区二区| 999福利在线视频| 国语自产在线不卡| 国产乱码午夜在线视频| 欧美极品少妇xxxxⅹ喷水 | 久久综合九色综合97婷婷| 欧美大喷水吹潮合集在线观看| 国产盗摄视频一区二区三区| 999热精品视频| 国内成+人亚洲+欧美+综合在线| www.这里只有精品| 精品一区二区综合| 超碰在线免费av| 国产精品一二三在| av天堂一区二区| 不卡av在线网| a级在线观看视频| 国产日韩v精品一区二区| 99久久久无码国产精品性| 国产午夜精品美女毛片视频| 成人午夜剧场视频网站| 久久九九久精品国产免费直播| 日韩精品电影一区二区| 国产天堂亚洲国产碰碰| 欧美xxxx精品| 亚洲蜜臀av乱码久久精品| 激情综合网五月天| 午夜电影久久久| 亚洲精品成人在线视频| 欧美丝袜第三区| av官网在线观看| 亚洲国产精品久久久久| 亚洲 欧美 激情 另类| 国产亚洲精品久久久久久777| 在线观看黄av| 久久躁狠狠躁夜夜爽| 免费在线国产视频| 91超碰caoporn97人人| 福利一区二区| 国产高清一区视频| 亚洲国产合集| 中文字幕日韩一区二区三区不卡 | 国产99久久久| 欧美精品日韩精品| 国产91麻豆视频| 亚洲天堂av女优| av中文字幕在线观看| 国产69精品久久久久99| 91精品韩国| av一区二区三区免费| 色婷婷狠狠五月综合天色拍| 亚洲一区精品视频| 激情综合电影网| 亚洲天堂av线| 成人免费高清在线观看| 极品人妻videosss人妻| 一区二区在线观看av| 91精品国产综合久久久蜜臀九色| 色婷婷综合中文久久一本| 国产又粗又猛视频| 精品亚洲永久免费精品| 国产盗摄在线观看| 欧洲精品毛片网站| 经典三级久久| 亚洲成人午夜在线| 91久久视频| 日本77777| 久久―日本道色综合久久| av激情在线观看| 欧美自拍丝袜亚洲| 三级视频在线看| 久久久精品中文字幕| 日韩新的三级电影| 国产伦精品一区二区三区视频黑人| 精品一区二区三区在线| 国产九九九九九| 毛片av一区二区三区| 亚洲av无码一区二区二三区| 一个色在线综合| 夜夜嗨av禁果av粉嫩avhd| 精品偷拍一区二区三区在线看| 羞羞的视频在线观看| 国产精品免费看久久久香蕉| 欧美在线导航| 蜜桃视频一区二区在线观看| 久久久精品性| 一区二区不卡免费视频| 亚洲一级二级在线| 99国产精品欲| 久久久国产精彩视频美女艺术照福利| 欧美电影免费观看| 精品国产一二| 91久久午夜| 国产+高潮+白浆+无码| 一区二区成人在线| 99精品在线看| 欧美成人合集magnet| 欧美日韩卡一| 亚洲二区自拍| 日本不卡视频在线观看| 国产精品一二三区在线观看| 午夜精品一区二区三区电影天堂| 精品国产999久久久免费| www.亚洲一区| av在线亚洲一区| 艳母动漫在线观看| 国产美女视频一区| 黄色a级片在线观看| 欧美喷潮久久久xxxxx| 亚洲乱亚洲乱妇| 成人精品视频99在线观看免费 | 亚洲精品日韩丝袜精品| 亚洲国产福利| 青青影院一区二区三区四区| 久久成人免费| 一色道久久88加勒比一| 欧美在线短视频| eeuss影院www在线播放| 国产日韩欧美视频| 亚洲视频电影在线| 日韩av成人网| 亚洲高清久久久| 亚洲欧洲成人在线| 日韩av毛片网| 99久久99视频只有精品| 一二三av在线| 一区二区三区在线观看视频| 性色av蜜臀av| 欧美一区二粉嫩精品国产一线天| 九九久久婷婷| 中文字幕色网站| 亚洲国产一区二区三区| 天堂在线观看免费视频| 国产成人一区二| 99热精品久久| 日本一区二区在线观看视频| 欧美日韩国产中字| 成人精品一区| 亚洲xxx视频| 香蕉国产精品偷在线观看不卡| 日韩女同一区二区三区 | 韩国女主播一区二区三区| 欧美性大战久久久久xxx| 国产精品网站在线| 丰满人妻一区二区三区免费视频 | www黄色av| 亚洲精品欧美专区| 国产精品麻豆一区二区三区 | 日本精品在线视频| 在线看片不卡| 女人黄色一级片| 国产视频久久久久| 久久爱www.| 国产一区二区在线免费播放| 午夜在线电影亚洲一区|