91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙ArkTS+ArkUI仿微信通訊錄頁(yè)面制作【2】

張?jiān)?/a> ? 來(lái)源:jf_51656278 ? 作者:jf_51656278 ? 2025-07-01 11:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

繼續(xù)先放一下效果圖

然后繼續(xù)上一篇文章的內(nèi)容,上一次我們講到如何去獲取每個(gè)人名字的第一個(gè)字,接下來(lái)講一下如何設(shè)置每個(gè)名字之前的那個(gè)圓的背景色
先放一下代碼:

getAvatarColor(name:string):string{
    const colors = [
      '#FF9AA2', '#FFB7B2', '#FFDAC1', '#E2F0CB', '#B5EAD7',
      '#C7CEEA', '#A8E6CF', '#FFD3A5', '#FD9644', '#9BB5FF',
      '#98D8C8', '#F7DC6F', '#BB8FCE', '#85C1E9', '#F8C471'
    ];
    const index = name.charCodeAt(0) % colors.length;
    return colors[index];
  }

name.charCodeAt(0) 方法用于獲取 name 字符串的第一個(gè)字符的 Unicode 編碼。例如,如果 name 是 "Apple",那么 name.charCodeAt(0) 將返回字符 'A' 的 Unicode 編碼(65)。
colors.length 表示 colors 數(shù)組的長(zhǎng)度,這里是 15。
% 是取模運(yùn)算符,用于計(jì)算 name.charCodeAt(0) 除以 colors.length 的余數(shù)。這個(gè)余數(shù)將作為 colors 數(shù)組的索引,確保索引值在 0 到 colors.length - 1 的范圍內(nèi)。例如,如果 name.charCodeAt(0) 是 65,colors.length 是 15,那么 65 % 15 的結(jié)果是 5,這意味著 index 的值為 5。所以說(shuō),每一個(gè)字符都能找到其專屬的一個(gè)顏色,而不用搞隨機(jī)數(shù),也能保證視覺(jué)效果的一致性。

然后要先設(shè)置基本的UI,通過(guò)List + ListItemGroup + ListItem來(lái)實(shí)現(xiàn),一般項(xiàng)目里我們很少用到ListItemGroup,但是因?yàn)檫@里我們?cè)跐L動(dòng)的時(shí)候,是按照首字母為一個(gè)組進(jìn)行滾動(dòng)的,并且每一組上面都有一個(gè)字母作為“標(biāo)題”,所以使用ListItemGroup更加方便,代碼如下:

List({scroller:this.scroller}){
          //聯(lián)系人列表
          ForEach(this.contactListArr,(val:Contact)= >{
            ListItemGroup({header:this.HeaderGroupItem(val.group)}){
              ForEach(val.namesList,(name:string)= >{
                ListItem(){
                  Row(){
                    //頭像
                    Column(){
                      Text(this.getInitial(name))
                        .fontSize(16)
                        .fontWeight(FontWeight.Medium)
                        .fontColor('#ffffff')
                    }.width(45).height(45).backgroundColor(this.getAvatarColor(name)).borderRadius(22.5).justifyContent(FlexAlign.Center).margin({right:16}).shadow({
                      radius:4,color:'#00000015',offsetX:0,offsetY:2
                    })
                    //姓名
                    Text(name)
                      .fontSize(16)
                      .fontColor('#1a1a1a')
                      .layoutWeight(1)
                    //右箭頭
                    Text(' >')
                      .fontSize(16)
                      .fontColor('#c7c7cc')
                  }.width('100%').padding({left:20,right:20,top:12,bottom:12}).alignItems(VerticalAlign.Center).backgroundColor('#ffffff').onClick(()= >{
                    console.log(`點(diǎn)擊了聯(lián)系人: ${name}`)
                  })
                }
              })
            }
          })
        }.backgroundColor('#f5f5f5').divider({
          strokeWidth:0.5,color:'#f0f0f0',startMargin:81,endMargin:20
        }).onScrollIndex((start)= >{
          this.currentIndex = start;
        }).layoutWeight(1)

接下來(lái)是AlphabetIndexer組件,我們先貼一下代碼,然后再詳細(xì)講解里面的各個(gè)屬性

AlphabetIndexer({arrayValue:this.alphabets,selected:this.currentIndex})
          .autoCollapse(false)
          .selectedColor('#007AFF')
          .itemSize(20)
          .popupBackground('#ffffff')
          .usingPopup(true)
          .alignStyle(IndexerAlign.Right)
          .popupFont({size:24,weight:FontWeight.Medium})
          .selectedFont({size:14,weight:FontWeight.Medium})
          .font({size:12})
          .itemBorderRadius(10)
          .popupPosition({x:30,y:0})
          .margin({right:12})
          .popupItemBorderRadius(8)
          .popupSelectedColor('#007AFF')
          .popupUnselectedColor('#8e8e93')
          .onSelect((index)= >{
            this.scroller.scrollToIndex(index)
          })

autoCollpase是是否自適應(yīng)折疊模式,在api12以后,這個(gè)值默認(rèn)為true,即自適應(yīng)折疊模式,因?yàn)槲覀儸F(xiàn)在是26個(gè)英文字母,所以按照文檔里的說(shuō)法,是會(huì)默認(rèn)折疊的。
usingPopup代表的是是否默認(rèn)顯示彈窗,也就是比如說(shuō)你點(diǎn)了右邊的A以后,會(huì)有一個(gè)彈窗來(lái)顯示你當(dāng)前點(diǎn)擊的是“A”
popupPosition就是代表的這個(gè)彈窗的位置,具體位置是相對(duì)于索引條上邊框中點(diǎn)的位置。但是這里和普通的position有點(diǎn)不太一樣……普通的坐標(biāo)軸是往左往上是負(fù)值,這里的是往左和往下是正值
然后是onSelect,也就是選中后,那么讓滾動(dòng)的控制器滾動(dòng)到對(duì)應(yīng)的ListItemGroup即可,因?yàn)?6個(gè)英文字母都有自己對(duì)應(yīng)的Group
最后,要注意這個(gè)List組件和AlphabetIndexer組件需要放在同一個(gè)stack組件里,采用堆疊容器

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Unicode
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    12919
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2963

    瀏覽量

    45899
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙消息彈窗不能進(jìn)入聊天界面

    用的最新鴻蒙6.0系統(tǒng),版本也是最新的,之前用的HarmonyOS4.0的就可以點(diǎn)擊消息彈窗,直接進(jìn)入聊天界面,很方便?,F(xiàn)在點(diǎn)擊消息
    發(fā)表于 12-11 16:20

    【HarmonyOS 5】鴻蒙頁(yè)面和組件生命周期函數(shù)

    【HarmonyOS 5】鴻蒙頁(yè)面和組件生命周期函數(shù) ##鴻蒙開(kāi)發(fā)能力 ##HarmonyOS SDK應(yīng)用服務(wù)##鴻蒙金融類應(yīng)用 (金融理財(cái)# 一、生命周期階段: 創(chuàng)建階段 build
    的頭像 發(fā)表于 07-11 18:24 ?1094次閱讀

    鴻蒙ArkTS+ArkUI仿消息列表頁(yè)制作

    ? 先放一下頁(yè)面效果: 第一步我們先定義一下數(shù)據(jù)格式,創(chuàng)建一個(gè)數(shù)據(jù)模型,通過(guò)圖片,可以看到每一條數(shù)據(jù)的字段應(yīng)當(dāng)包括:頭像,姓名,最新消息內(nèi)容和最新消息的時(shí)間,創(chuàng)建一個(gè)model文件夾,然后在里面新建
    發(fā)表于 06-30 18:28

    仿登錄頁(yè)面制作

    還涉及到一個(gè)TextInput占位符的問(wèn)題,可以從頁(yè)面中看到,占位符的顏色明顯和旁邊的文字顏色不同,那么如果直接設(shè)置fontColor的話,設(shè)置的是輸入的文字的顏色而不是占位符的顏色,對(duì)于
    發(fā)表于 06-30 18:25

    ArkUI介紹

    ArkUI(方舟UI框架)為應(yīng)用的UI開(kāi)發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡(jiǎn)潔的UI語(yǔ)法、豐富的UI功能(組件、布局、動(dòng)畫(huà)以及交互事件),以及實(shí)時(shí)界面預(yù)覽工具等,可以支持開(kāi)發(fā)者進(jìn)行可視化界面開(kāi)發(fā)
    發(fā)表于 06-24 06:41

    ArkUI-X平臺(tái)橋接Bridge說(shuō)明

    傳遞數(shù)據(jù),如傳遞JSON數(shù)據(jù)、圖片等; 2ArkUI側(cè)調(diào)用平臺(tái)的API,如獲取Android或iOS平臺(tái)上的電池電量、復(fù)用平臺(tái)上的三方庫(kù)等; 3、平臺(tái)調(diào)用ArkUI側(cè)的方法,如復(fù)用JavaScript
    發(fā)表于 06-19 23:12

    ArkUI-X應(yīng)用工程結(jié)構(gòu)說(shuō)明

    ArkUI-X應(yīng)用中,可保證ArkUI-X應(yīng)用在各平臺(tái)上UX渲染一致性。 綜上所述,Android平臺(tái)上通過(guò)assets管理ArkTS編譯產(chǎn)物、ArkUI應(yīng)用資源和
    發(fā)表于 06-19 23:11

    ArkUI-X跨平臺(tái)技術(shù)落地-華為運(yùn)動(dòng)健康(一)

    的設(shè)計(jì)策略: 1.運(yùn)動(dòng)健康首頁(yè)歷史邏輯復(fù)雜,涉及的模塊多并且改造包袱重,仍使用原生頁(yè)面native開(kāi)發(fā)技術(shù)。 2.在運(yùn)動(dòng)健康內(nèi)部的二級(jí)頁(yè)面(如心臟健康、睡眠等頁(yè)面)使用
    發(fā)表于 06-18 22:53

    ArkUI-X跨平臺(tái)應(yīng)用改造指南

    ArkUI-X跨平臺(tái)應(yīng)用改造指南 現(xiàn)狀與訴求 隨著 HarmonyOS Next 5.0 版本正式發(fā)布,眾多開(kāi)發(fā)者基于 ArkTS 語(yǔ)言為 HarmonyOS Next 系統(tǒng)開(kāi)發(fā)了大量應(yīng)用,這極大
    發(fā)表于 06-16 23:05

    ArkUI-X與Android聯(lián)動(dòng)編譯開(kāi)發(fā)指南

    ArkTS產(chǎn)物到Android工程中。 其功能主要包括: 1.手動(dòng)配置編譯ArkTS源碼開(kāi)關(guān) 2.手動(dòng)配置編譯module 3.手動(dòng)配置文件輸出路徑 編譯配置說(shuō)明 配置編譯ArkTS
    發(fā)表于 06-16 22:55

    鴻蒙5開(kāi)發(fā)寶藏案例分享---Web頁(yè)面內(nèi)點(diǎn)擊響應(yīng)時(shí)延分析

    鴻蒙Web性能優(yōu)化寶藏指南!那些官方?jīng)]明說(shuō)的實(shí)戰(zhàn)技巧 各位鴻蒙開(kāi)發(fā)者好!最近在排查Web頁(yè)面卡頓時(shí),意外在HarmonyOS開(kāi)發(fā)者文檔里挖到性能優(yōu)化的寶藏案例!這些實(shí)戰(zhàn)經(jīng)驗(yàn)藏在「應(yīng)用質(zhì)量 &
    發(fā)表于 06-12 17:09

    ArkUI-X添加到現(xiàn)有Android項(xiàng)目中

    本教程主要講述如何利用ArkUI-X SDK完成Android AAR開(kāi)發(fā),實(shí)現(xiàn)基于ArkTS的聲明式開(kāi)發(fā)范式在android平臺(tái)顯示。包括: 1.跨平臺(tái)Library工程開(kāi)發(fā)介紹 2.AAR在
    發(fā)表于 06-04 22:35

    鴻蒙5開(kāi)發(fā)寶藏案例分享---一多開(kāi)發(fā)實(shí)例(即時(shí)通訊

    } else if (this.currentPageIndex === 1) { // 通訊錄布局 } } .mode(this.currentBreakpoint === \'sm
    發(fā)表于 06-03 16:01

    ArkUI-X添加到現(xiàn)有Android項(xiàng)目中

    本教程主要講述如何利用ArkUI-X SDK完成Android AAR開(kāi)發(fā),實(shí)現(xiàn)基于ArkTS的聲明式開(kāi)發(fā)范式在android平臺(tái)顯示。包括: 1.跨平臺(tái)Library工程開(kāi)發(fā)介紹 2.AAR在
    發(fā)表于 05-28 22:44

    開(kāi)源啦?。?!基于鴻蒙ArkTS封裝的圖表組件《McCharts》,大家快來(lái)一起共創(chuàng)

    Hello;大家好,我是陳楊。好久沒(méi)更新了,首先是自己本職工作比較忙,基本沒(méi)時(shí)間寫(xiě)作。其次就是學(xué)習(xí)技術(shù),自學(xué)鴻蒙ArkTS語(yǔ)言已經(jīng)接近半年了,也算半路出師了,這次將分享我封裝的組件庫(kù),所以有啥講錯(cuò)
    發(fā)表于 03-15 15:21