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

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

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

鴻蒙 TabList 配合 Fraction 實(shí)現(xiàn)頂部切換效果演示

OpenHarmony技術(shù)社區(qū) ? 來源:HarmonyOS技術(shù)社區(qū) ? 作者:HarmonyOS技術(shù)社區(qū) ? 2022-01-04 14:41 ? 次閱讀

今天我想著配合鴻蒙里面提供的頂部切換控件 tablist,來實(shí)現(xiàn)頂部 tab 切換,然后下面多個(gè) fraction 的效果。廢話不多說,我們正式開始。

效果圖如下:

具體實(shí)現(xiàn)

定 tablist 布局:









我們?cè)诳v向線性布局上面寫了一個(gè) tablist 然后下面寫了一個(gè) StackLayout 來裝載我們的多個(gè) fraction。

java 代碼邏輯,頂部標(biāo)簽數(shù)據(jù):

privateString[]str={"關(guān)注","推薦","熱點(diǎn)","問答"};

初始化 tab 并且添加頂部標(biāo)簽文字:

privatevoidinitview(){
TabListtabList=(TabList)findComponentById(ResourceTable.Id_tab_list);
if(tabList!=null){
for(inti=0;i

我們初始化 tablist 控件后,for 循環(huán)設(shè)置我們 tablist 的 tab,并添加到 tablist 組件的 addTab 方法中。

①多個(gè) fraction 切換邏輯:

privatevoidaddHomeFraction(){
getFractionManager()
.startFractionScheduler()
.add(ResourceTable.Id_mainstack,newAttentionFraction())
.submit();
}


publicvoidlayoutShow(intcode){
switch(code){
case0:
getFractionManager()
.startFractionScheduler()
.replace(ResourceTable.Id_mainstack,newAttentionFraction())
.submit();

break;
case1:
getFractionManager()
.startFractionScheduler()
.replace(ResourceTable.Id_mainstack,newRecommendFraction())
.submit();


break;
case2:
getFractionManager()
.startFractionScheduler()
.replace(ResourceTable.Id_mainstack,newHotspotFraction())
.submit();

break;
case3:
getFractionManager()
.startFractionScheduler()
.replace(ResourceTable.Id_mainstack,newQuestionFraction())
.submit();

break;
default:
break;
}
}
這邊我們提供了一個(gè) addHomeFraction 方法和 layoutShow 方法。 我們?cè)谶M(jìn)入 MainAbility 的時(shí)候調(diào)用 addHomeFraction 來加載第一個(gè)默認(rèn)的 fraction。

然后我們?cè)邳c(diǎn)擊頂部的 tablist 標(biāo)簽的時(shí)候,我們?cè)?onSelected 回調(diào)方法中調(diào)用 layoutShow方法。

publicvoidonSelected(TabList.Tabtab){
//當(dāng)某個(gè)Tab從未選中狀態(tài)變?yōu)檫x中狀態(tài)時(shí)的回調(diào)
System.out.println("當(dāng)某個(gè)Tab從未選中狀態(tài)變?yōu)檫x中狀態(tài)時(shí)的回調(diào)");
layoutShow(tab.getPosition());
}

我們只需要傳入 tab.getPosition() 點(diǎn)擊頂部標(biāo)簽的下標(biāo)即可,這樣依賴我們的 tablist 配合多個(gè) fraction 切換功能就實(shí)現(xiàn)了。具體的 fraction 的內(nèi)部邏輯我們簡(jiǎn)單說一下。

②關(guān)注模塊

布局文件:







java 邏輯代碼:

packagecom.example.tablist.fraction;
importcom.example.tablist.ResourceTable;
importcom.example.tablist.bean.PositionInfo;
importcom.example.tablist.config.Api;
importcom.example.tablist.provider.PositionProvider;
importcom.google.gson.Gson;
importohos.aafwk.ability.fraction.Fraction;
importohos.aafwk.content.Intent;
importohos.agp.components.Component;
importohos.agp.components.ComponentContainer;
importohos.agp.components.LayoutScatter;
importohos.agp.components.ListContainer;
importjava.util.List;
/***
*
*創(chuàng)建人:xuqing
*創(chuàng)建2021年2月28日1703
*類說明:關(guān)注模塊
*
*/
publicclassAttentionFractionextendsFraction{
privatePositionProviderpositionProvider;
privateListContainerlistContainer;
@Override
protectedComponentonComponentAttached(LayoutScatterscatter,ComponentContainercontainer,
Intentintent){
Componentcomponent=scatter.parse(ResourceTable.Layout_fraction_attention,container,false);
returncomponent;
}
protectedvoidonStart(Intentintent){
super.onStart(intent);
listContainer=(ListContainer)
getFractionAbility().findComponentById(ResourceTable.Id_jop_page_list);
getPostition();
}
publicvoidgetPostition(){
Gsongson=newGson();
PositionInfopositionInfo=gson.fromJson(Api.getPositioninfo(),PositionInfo.class);
Listlist=positionInfo.getData();
positionProvider=newPositionProvider(list,getFractionAbility());
listContainer.setItemProvider(positionProvider);
}
}

幾個(gè) fraction 其實(shí)比較簡(jiǎn)單,都是加載本地死數(shù)據(jù)顯示在 listContainer 控件上面。

其他幾個(gè) fraction 因?yàn)檫壿嫸疾畈欢辔疫@邊就不展開一個(gè)一個(gè)講,有興趣的同學(xué)可以下載完整代碼去查閱,鴻蒙到此 TabList 配合 Fraction 實(shí)現(xiàn)頂部切換效果就講完了。

總結(jié)

鴻蒙里面提供了比較好用的 tablist 組件,我們只需要簡(jiǎn)單的基本就能實(shí)現(xiàn)頂部 tab 的切換了。 然后配合 fraction 跟 Ability 進(jìn)行綁定,但是我們的 Ability 需要繼承 FractionAbility。這樣我們就能完成 fraction 和 ability 的綁定。 我們?cè)?tablist 的回調(diào)方法去調(diào)用我們替換 fraction 的方法就能實(shí)現(xiàn)頂部 tablist 點(diǎn)擊切換的時(shí)候下面的 fraction 跟著一起切換。

更多的 tablist 和 fraction 的聯(lián)動(dòng)效果同學(xué)們有興趣可以私下研究,我這邊篇幅有限就不展開講了。

最后希望我的文章能幫助到各位解決問題,以后我還會(huì)貢獻(xiàn)更多有用的代碼分享給大家。

項(xiàng)目地址:

https://gitee.com/qiuyu123/tablistcut

原文標(biāo)題:在鴻蒙上實(shí)現(xiàn)“頂部切換”效果

文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭菁

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

    關(guān)注

    19

    文章

    2967

    瀏覽量

    104758
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

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

    關(guān)注

    57

    文章

    2352

    瀏覽量

    42859

原文標(biāo)題:在鴻蒙上實(shí)現(xiàn)“頂部切換”效果

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    元服務(wù)FreeBrowser演示效果

    元服務(wù)FreeBrowser演示效果
    發(fā)表于 11-07 16:50

    鴻蒙機(jī)器人與鴻蒙開發(fā)板聯(lián)動(dòng)演示

    鴻蒙機(jī)器人與鴻蒙開發(fā)板聯(lián)動(dòng)演示,機(jī)器人的角色為迎賓機(jī)器人,開發(fā)板負(fù)責(zé)人賓客出現(xiàn)監(jiān)聽
    發(fā)表于 12-02 14:55

    用DGUS做的PPT切換頁面效果

    本帖最后由 ccn 于 2018-8-27 16:13 編輯 用DGUS做的PPT切換頁面效果,其實(shí)就是利用了DGUS的“剪切圖片區(qū)域”指令,可惜的是只能剪切矩形??梢园错樞蚣羟校部梢源騺y了
    發(fā)表于 08-27 16:10

    fraction為什么編譯不過?

    fraction=(temp-mantissa)*16;寫成fraction=(temp-mantissa)
    發(fā)表于 08-21 08:00

    搭載HarmonyOS鴻蒙系統(tǒng)2.0的華為P40演示

    搭載HarmonyOS鴻蒙系統(tǒng)2.0的華為P40演示
    發(fā)表于 01-14 09:32

    HarmonyOS-JS商城手機(jī)TV分布式布局效果練習(xí)

    ` 本帖最后由 李洋水蛟龍 于 2021-3-5 17:24 編輯 一、效果展示 二、簡(jiǎn)要說明主要是參照鴻蒙官方演示代碼,實(shí)現(xiàn)的各項(xiàng)效果
    發(fā)表于 03-05 17:20

    ComponentCodelab——Tablist的使用方法

    讓開發(fā)者了解HarmonyOS應(yīng)用開發(fā)常用布局和常用組件之Tablist的使用方法,體驗(yàn)從工程創(chuàng)建到代碼、布局的編寫,再到編譯構(gòu)建、部署和運(yùn)行的全過程。
    發(fā)表于 05-08 22:04

    ComponentCodelab——體驗(yàn)TabList和Tab組件(實(shí)操)

    演示鴻蒙ComponentCodelab中TabList和Tab組件的使用
    發(fā)表于 05-09 17:06

    TabList find為什么總是返回null?

    TabList為什么findComponentById返回null在xml中已經(jīng)定義過了,發(fā)現(xiàn)總是返回null
    發(fā)表于 03-16 14:12

    請(qǐng)問下鴻蒙webview切換后臺(tái)后,要怎么才能停止聲音的播放?

    請(qǐng)問下鴻蒙webview切換后臺(tái)后,要怎么才能停止聲音的播放我是用了onInactive,依然沒有起到效果
    發(fā)表于 05-11 11:21

    在Altera SoC上面演示Android應(yīng)用程序效果

    演示由Altera全球合作伙伴Fujisoft提供。演示在Altera SoC上面的Android應(yīng)用程序。并且Fujisoft演示了在FPGA邏輯上實(shí)現(xiàn)2D加速IP,達(dá)到高達(dá)54f
    的頭像 發(fā)表于 06-26 08:08 ?3478次閱讀

    基于AS腳本的flash圖片自動(dòng)切換效果實(shí)現(xiàn)

    本文詳細(xì)介紹了用Adobe Flash Professional CS5.5腳本設(shè)計(jì)圖片切換效果的技術(shù)和步驟,并附上腳本詳細(xì)代碼,對(duì)網(wǎng)站動(dòng)畫設(shè)計(jì)和多媒體課件制作都具有一定的指導(dǎo)作用。
    的頭像 發(fā)表于 11-15 08:43 ?3468次閱讀
    基于AS腳本的flash圖片自動(dòng)<b class='flag-5'>切換</b><b class='flag-5'>效果</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    Fluid catalytic cracking of petroleum fraction

    Fluid catalytic cracking of petroleum fraction(5g電源技術(shù)要求)-Fluid catalytic cracking of petroleum fraction (vacuum gas oil) to produce gaso
    發(fā)表于 08-04 16:49 ?10次下載
    Fluid catalytic cracking of petroleum <b class='flag-5'>fraction</b>

    基于openharmony實(shí)現(xiàn)綁定ability和fraction頁面切換的三方庫

    項(xiàng)目介紹 項(xiàng)目名稱:Alligator 所屬系列:openharmony的第三方組件適配移植 功能:通過注解處理器實(shí)現(xiàn)一套綁定ability和fraction頁面切換的三方庫 項(xiàng)目移植狀態(tài):主功能
    發(fā)表于 04-08 10:21 ?1次下載

    如何在Linux系統(tǒng)實(shí)現(xiàn)屏幕旋轉(zhuǎn)?觸覺智能RK3568鴻蒙開發(fā)板演示

    本文介紹Linux系統(tǒng)實(shí)現(xiàn)屏幕旋轉(zhuǎn)的方法,以解決產(chǎn)品形態(tài)的不同的展現(xiàn)方式,觸覺智能EVB3568鴻蒙開發(fā)板演示,現(xiàn)已發(fā)布全新OpenHarmony5.0 Release固件!
    的頭像 發(fā)表于 11-19 23:42 ?296次閱讀
    如何在Linux系統(tǒng)<b class='flag-5'>實(shí)現(xiàn)</b>屏幕旋轉(zhuǎn)?觸覺智能RK3568<b class='flag-5'>鴻蒙</b>開發(fā)板<b class='flag-5'>演示</b>