国产chinesehdxxxx老太婆,办公室玩弄爆乳女秘hd,扒开腿狂躁女人爽出白浆 ,丁香婷婷激情俺也去俺来也,ww国产内射精品后入国产

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

鴻蒙版微信聊天UI效果實現(xiàn)!

OpenHarmony技術社區(qū) ? 來源:鴻蒙技術社區(qū) ? 作者:鴻蒙技術社區(qū) ? 2021-11-15 09:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近開發(fā)中要做一個類似微信聊天的工單系統(tǒng)客服中心界面(安卓版)所以想著也模仿一個鴻蒙版(基于 Java UI 的,JS UI 版本的后期更新哈) 那么廢話不多數(shù)說我們正式開始。

具體實現(xiàn)

mainabiilty 布局文件:

<DependentLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_parent"
ohos:width="match_parent"
ohos:alignment="center"
ohos:orientation="vertical">

<DependentLayout
ohos:id="$+id:company_page_dl"
ohos:height="50vp"
ohos:width="match_parent"
ohos:orientation="horizontal"
ohos:align_parent_bottom="true"
>

<Button
ohos:id="$+id:main_my_btn"
ohos:width="match_content"
ohos:height="match_content"
ohos:text="發(fā)送"
ohos:text_size="35vp"
ohos:align_parent_right="true"
ohos:background_element="$graphic:background_btn"
>
Button>
<TextField
ohos:id="$+id:main_textfiled"
ohos:width="match_parent"
ohos:height="match_parent"
ohos:hint="請輸入你的消息"
ohos:vertical_center="true"
ohos:text_size="50"
ohos:left_of="$id:main_my_btn"
ohos:layout_alignment="left"
>
TextField>
DependentLayout>

<ListContainer
ohos:above="$id:company_page_dl"
ohos:id="$+id:main_list"
ohos:height="match_parent"
ohos:width="match_parent"
>
ListContainer>

DependentLayout>
觀察布局文件,我們可以看到寫了一個列表控件 ListContainer 來裝載發(fā)送出去的消息和接收到的消息。

然后底部寫了一個 TextField 控件來處理用戶的輸入和一個 button 來觸發(fā)發(fā)送的動作。

邏輯代碼

我們初始化對應控件并且 listContainer 和適配器綁定到一起:

privatevoidinitview(){
listContainer=(ListContainer)findComponentById(ResourceTable.Id_main_list);
textField=(TextField)findComponentById(ResourceTable.Id_main_textfiled);
mainbtn=(Button)findComponentById(ResourceTable.Id_main_my_btn);
mainbtn.setClickedListener(this);
myProvider=newMyProvider(data,getAbility());
listContainer.setItemProvider(myProvider);
myProvider.notifyDataChanged();//有新消息時,刷新ListView中的顯示
}

①初始默認假數(shù)據(jù)

我們方便展示就寫了 3 條假數(shù)據(jù)僅供展示:

privatevoidinitMsg(){
Msgmsg1=newMsg("你好",Msg.RECEIVED);
data.add(msg1);
Msgmsg2=newMsg("你好呀",Msg.SENT);
data.add(msg2);
Msgmsg3=newMsg("很高興認識你",Msg.RECEIVED);
data.add(msg3);
}

②用戶輸入邏輯:
@Override
publicvoidonClick(Componentcomponent){
content=textField.getText().toString();
switch(component.getId()){
caseResourceTable.Id_main_my_btn:
if(!flag){
Msgmsg=newMsg(content,Msg.SENT);
data.add(msg);
flag=true;
}else{
Msgmsg=newMsg(content,Msg.RECEIVED);
data.add(msg);
flag=false;
}
myProvider.notifyDataChanged();//有新消息時,刷新ListView中的顯示
textField.setText("");//清空輸入框的內(nèi)容
break;

default:
break;

}

}
我們通過一個布爾值 flag 來做一個開關處理用戶輸入的,動作輪流來處理是接收到消息還是發(fā)送出消息。

發(fā)送消息:

Msgmsg=newMsg(content,Msg.SENT);
data.add(msg);

接收消息:

Msgmsg=newMsg(content,Msg.RECEIVED);
data.add(msg);

bena 類

packagecom.example.imdemo.bean;

publicclassMsg{

publicstaticfinalintRECEIVED=0;//收到一條消息

publicstaticfinalintSENT=1;//發(fā)出一條消息

privateStringcontent;//消息的內(nèi)容

privateinttype;//消息的類型

publicMsg(Stringcontent,inttype){
this.content=content;
this.type=type;
}

publicStringgetContent(){
returncontent;
}

publicintgetType(){
returntype;
}
}
我們分別定義了 2 個常量和 2 個變量來處理我們的消息邏輯。

適配器

適配器 item.xml 布局:


<DirectionalLayout
xmlns:ohos="http://schemas.huawei.com/res/ohos"
ohos:height="match_content"
ohos:width="match_parent"
ohos:orientation="vertical">
<DirectionalLayout
ohos:id="$+id:left_layout"
ohos:height="match_content"
ohos:width="match_content"
ohos:layout_alignment="left"
ohos:background_element="$graphic:background_blue"
ohos:left_margin="5vp"
ohos:visibility="visible"
ohos:top_margin="10vp"
>

<Text
ohos:id="$+id:left_msg"
ohos:height="match_content"
ohos:width="match_content"
ohos:text="哈哈哈測試"
ohos:text_color="#fff"
ohos:text_size="20vp"
ohos:margin="10vp"
>
Text>

DirectionalLayout>



<DirectionalLayout
ohos:id="$+id:right_Layout"
ohos:height="match_content"
ohos:width="match_content"
ohos:layout_alignment="right"
ohos:background_element="$graphic:background_red"
ohos:right_margin="5vp"
ohos:visibility="visible"
>
<Text
ohos:id="$+id:right_msg"
ohos:height="match_content"
ohos:width="match_content"
ohos:text="哈哈哈測試"
ohos:text_color="#fff"
ohos:text_size="20vp"
ohos:margin="10vp"
>
Text>
DirectionalLayout>
DirectionalLayout>

item 布局預覽效果:

19f2e066-458d-11ec-b939-dac502259ad0.png適配器邏輯代碼:
packagecom.example.imdemo.provider;
importcom.example.imdemo.ResourceTable;
importcom.example.imdemo.bean.Msg;
importohos.aafwk.ability.Ability;
importohos.agp.components.*;

importjava.util.List;

publicclassMyProviderextendsBaseItemProvider{

privateListlist;
privateAbilityability;


publicMyProvider(Listlist,Abilityability){
this.list=list;
this.ability=ability;
}

@Override
publicintgetCount(){
returnlist.size();
}

@Override
publicObjectgetItem(inti){
returnlist.get(i);
}

@Override
publiclonggetItemId(inti){
returni;
}

@Override
publicComponentgetComponent(inti,Componentcomponent,ComponentContainercomponentContainer){

ViewHodlerhodler=null;
Msgmsg=list.get(i);
if(component==null){
component=LayoutScatter.getInstance(ability).parse(ResourceTable.Layout_item,null,false);
hodler=newViewHodler();
hodler.leftLayout=(DirectionalLayout)component.findComponentById(ResourceTable.Id_left_layout);
hodler.rightLayout=(DirectionalLayout)component.findComponentById(ResourceTable.Id_right_Layout);
hodler.leftMsg=(Text)component.findComponentById(ResourceTable.Id_left_msg);
hodler.rightMsg=(Text)component.findComponentById(ResourceTable.Id_right_msg);
component.setTag(hodler);
}else{
hodler=(ViewHodler)component.getTag();
}
System.out.println("type--->"+msg.getType());
if(msg.getType()==Msg.RECEIVED){
System.out.println("左邊消息");
//如果是收到的消息,則顯示左邊消息布局,將右邊消息布局隱藏
hodler.leftLayout.setVisibility(0);
hodler.rightLayout.setVisibility(1);
hodler.leftMsg.setText(msg.getContent());
}elseif(msg.getType()==Msg.SENT){
System.out.println("右邊消息");
//如果是發(fā)出去的消息,顯示右邊布局的消息布局,將左邊的消息布局隱藏
hodler.rightLayout.setVisibility(0);
hodler.leftLayout.setVisibility(1);
hodler.rightMsg.setText(msg.getContent());
}
returncomponent;
}

classViewHodler{
DirectionalLayoutleftLayout;
DirectionalLayoutrightLayout;
TextleftMsg;
TextrightMsg;

}
}
我們通過在 getComponent 方法中通過小標 i 來遍歷集合然后拿到里面每一個對應里面的 type 屬性來判斷是顯示左邊布局還是右邊布局。 也就是對應的發(fā)送消息和接收消息的 UI,我們通過簡單布局顯示影藏來實現(xiàn)消息的左右兩邊顯示效果,到此整個仿微信聊天的布局 UI 效果就講完了 。

總結

鴻蒙的仿微信聊天 UI 效果實現(xiàn)起來相對比較簡單,其實還有一種辦法那就是 ListContainer 的多布局也是通過 bean 里面的標識來顯示左右不同的布局實現(xiàn)聊天界面的效果。

因為篇幅有限這里就不展開講了有興趣的同學可以私下研究。最后希望我的文章能幫助到各位解決問題,以后我還會貢獻更多有用的代碼分享給大家。

項目地址:

https://gitee.com/qiuyu123/hms_im_demo
編輯:jq

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

    關注

    20

    文章

    2989

    瀏覽量

    109603
  • JS
    JS
    +關注

    關注

    0

    文章

    78

    瀏覽量

    18456
  • ui
    ui
    +關注

    關注

    0

    文章

    208

    瀏覽量

    21791
  • 鴻蒙
    +關注

    關注

    60

    文章

    2618

    瀏覽量

    44040

原文標題:鴻蒙版微信聊天UI效果實現(xiàn)!

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區(qū)】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    鴻蒙應用px,vp,fp概念詳解

    傳統(tǒng)移動端開發(fā)方向,轉到鴻蒙應用開發(fā)方向。 前端開發(fā)同學對于開發(fā)范式很熟悉,但是對于工作流程和開發(fā)方式是會有不適感,其實移動應用開發(fā)與前端開發(fā),最大的區(qū)別就在于UI適配和性能優(yōu)化上了。 今天我們就來分析下鴻蒙
    的頭像 發(fā)表于 07-07 11:48 ?168次閱讀
    <b class='flag-5'>鴻蒙</b>應用px,vp,fp概念詳解

    鴻蒙ArkTS+ArkUI仿消息列表頁制作

    \' }) 這里使用了justifyContent屬性來進行居中,如果不加這個屬性的話,那么100%寬度的row會讓文字靠左顯示。接下來是顯示聊天數(shù)據(jù)的列表,這里采用ForEach列表渲染來實現(xiàn)。組件上的話
    發(fā)表于 06-30 18:28

    UI開發(fā)概述

    的渲染效果。開發(fā)者可以將系統(tǒng)內(nèi)置組件組合為自定義組件,通過這種方式將頁面組件化為一個個獨立的UI單元,實現(xiàn)頁面不同單元的獨立創(chuàng)建、開發(fā)和復用,具有更強的工程性。 頁面路由和組件導航 應用可能包含多個頁面
    發(fā)表于 06-24 06:36

    鴻蒙Next實現(xiàn)瀑布流布局

    為了實現(xiàn)類似真實瀑布流不斷加載新數(shù)據(jù)的效果,可以結合鴻蒙的 LazyForEach 組件,在滾動到列表底部時觸發(fā)數(shù)據(jù)加載邏輯 六、網(wǎng)絡權限 // config.json { \"module
    發(fā)表于 06-10 14:17

    HarmonyOS實戰(zhàn):快遞信息時間軸效果實現(xiàn)

    前言 快遞信息時間軸在購物軟件中是必不可少的功能,通過時間軸可以展示快遞從發(fā)貨到派送的每一個環(huán)節(jié)。本篇文章通過代碼的形式詳細講解在鴻蒙日常開發(fā)中如何實現(xiàn)時間軸的效果。(篇尾附有完整源碼) 實現(xiàn)
    的頭像 發(fā)表于 06-09 16:05 ?156次閱讀
    HarmonyOS實戰(zhàn):快遞信息時間軸<b class='flag-5'>效果實現(xiàn)</b>

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    的 ArkUI 來編寫的,UI組件由數(shù)據(jù)和UI描述組成,UI更新只能通過修改其綁定的數(shù)據(jù)來實現(xiàn)。渲染層怎樣驅(qū)動聲明式的ArkUI成為了鴻蒙
    發(fā)表于 06-04 16:46

    國科受邀出席2025開源鴻蒙開發(fā)者大會

    近日,開源鴻蒙開發(fā)者大會2025在深圳舉行,開源鴻蒙5.1 Release版本正式發(fā)布。作為開源鴻蒙生態(tài)核心建設力量,國科受邀出席開源鴻蒙
    的頭像 發(fā)表于 05-29 11:28 ?491次閱讀

    RV1126 實現(xiàn)簡單的UI開發(fā)示例

    在RV1126上實現(xiàn)簡單的UI開發(fā)實例
    的頭像 發(fā)表于 04-09 16:08 ?404次閱讀
    RV1126 <b class='flag-5'>實現(xiàn)</b>簡單的<b class='flag-5'>UI</b>開發(fā)示例

    第二篇 RA8889 實現(xiàn)酷炫車載液晶儀表系列視頻: UI類界面介紹

    本系列文章介紹 RA8889 實現(xiàn)液晶儀表HMI UI界面,分為兩大部分來介紹,本期介紹如何制作UI類界面,其中包括使用PS軟件制作靜態(tài)類UI界面,Ae軟件制作動態(tài)類的
    的頭像 發(fā)表于 02-25 15:27 ?466次閱讀
    第二篇 RA8889 <b class='flag-5'>實現(xiàn)</b>酷炫車載液晶儀表系列視頻: <b class='flag-5'>UI</b>類界面介紹

    HarmonyOS NEXT 原生應用開發(fā):社交聊天對話過程實現(xiàn)

    一、實現(xiàn)思路 本DEMO旨在展示如何在HarmonyOS NEXT平臺上,利用ArkTS開發(fā)語言構建一個簡易的社交聊天對話界面。用戶可以在此界面上查看聊天記錄,并發(fā)送新的消息。此示例中,聊天
    發(fā)表于 01-07 10:55

    自動化創(chuàng)建UI并解析數(shù)據(jù)

    Labview實現(xiàn)動態(tài)增加控件效果 - *附件:32960_auto.rar 備注:Main.vi是ui自動化2.1.vi,配置文件為32960.B.ini。 目前可以實現(xiàn)根據(jù)配置文件
    發(fā)表于 11-29 11:26

    鴻蒙系統(tǒng)專用版信內(nèi)測即將啟動

    近日,有知情人士稱鴻蒙系統(tǒng)專用版的開發(fā)工作現(xiàn)已基本完成。這一消息標志著在適配鴻蒙系統(tǒng)方面
    的頭像 發(fā)表于 11-07 10:58 ?1495次閱讀

    Linux4.0.0版發(fā)布,功能再升級

    近日,備受矚目的Linux4.0.0版本終于迎來了正式發(fā)布。此次版本更新不僅帶來了多項實用功能,還實現(xiàn)了與Windows、macOS公測版本的功能一致和更新同步,為用戶帶來了更加便捷
    的頭像 發(fā)表于 11-06 10:59 ?770次閱讀

    名單公布!【書籍評測活動NO.47】HarmonyOS NEXT啟程:零基礎構建純血鴻蒙應用

    本期評測名單如下 趙龍、華為開發(fā)者論壇 、鄧文權、iwpgk、夜孤影 請以上幾位大佬聯(lián)系工作人員(:elecfans123)領取書籍進行評測,如在5個工作日內(nèi)未聯(lián)系,視為放棄本次試用評測資格
    發(fā)表于 10-14 14:36

    基于鴻蒙Next模擬掃圖識物的一個過程

    一、功能介紹(基礎) 基于鴻蒙Next模擬掃圖識物的一個過程,掃描到圖片,提示出相關的圖片內(nèi)容,是一個什么東西。 二、使用場景(大類) 支付、社交、信息獲取、在線調(diào)查、教育學習等等。 三、實現(xiàn)步驟
    發(fā)表于 08-21 15:04