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

完善資料讓更多小伙伴認(rèn)識你,還能領(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 切換,然后下面多個 fraction 的效果。廢話不多說,我們正式開始。

效果圖如下:

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

定 tablist 布局:









我們在縱向線性布局上面寫了一個 tablist 然后下面寫了一個 StackLayout 來裝載我們的多個 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 方法中。

①多個 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;
}
}
這邊我們提供了一個 addHomeFraction 方法和 layoutShow 方法。 我們在進(jìn)入 MainAbility 的時候調(diào)用 addHomeFraction 來加載第一個默認(rèn)的 fraction。

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

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

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

②關(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);
}
}

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

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

總結(jié)

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

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

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

項(xiàng)目地址:

https://gitee.com/qiuyu123/tablistcut

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

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

審核編輯:彭菁

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

    關(guān)注

    19

    文章

    2943

    瀏覽量

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

    關(guān)注

    30

    文章

    4670

    瀏覽量

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

    關(guān)注

    56

    文章

    2267

    瀏覽量

    42481

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    用DGUS做的PPT切換頁面效果

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

    fraction為什么編譯不過?

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

    【HarmonyOS HiSpark IPC DIY Camera試用 】產(chǎn)品切換鴻蒙技術(shù)研究項(xiàng)目

    項(xiàng)目名稱:產(chǎn)品切換鴻蒙技術(shù)研究項(xiàng)目試用計劃:申請理由本人在OS領(lǐng)域有多年的學(xué)習(xí)和開發(fā)經(jīng)驗(yàn),曾設(shè)計和開發(fā)過多款嵌入式OS的系統(tǒng)軟件。對鴻蒙OS有較深入的了解。對鴻蒙的分布式調(diào)度、一處開發(fā)
    發(fā)表于 10-29 15:16

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

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

    跳轉(zhuǎn)到鴻蒙-在HarmonyOS手機(jī)應(yīng)用實(shí)現(xiàn)圖片文字布局與頁面跳轉(zhuǎn)功

    一、亮點(diǎn)說明應(yīng)用頁面的圖片和文字布局與實(shí)現(xiàn)頁面的跳轉(zhuǎn),是一個應(yīng)用開發(fā)的最基本的組成部分。特別是剛開始進(jìn)入鴻蒙應(yīng)用服務(wù)開發(fā)領(lǐng)域的開發(fā)者,這是最基本的練習(xí),熟練的掌握本部分后,對整體的IDE和后續(xù)各項(xiàng)
    發(fā)表于 02-08 14:55

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

    ` 本帖最后由 李洋水蛟龍 于 2021-3-5 17:24 編輯 一、效果展示 二、簡要說明主要是參照鴻蒙官方演示代碼,實(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

    請問下鴻蒙webview切換后臺后,要怎么才能停止聲音的播放?

    請問下鴻蒙webview切換后臺后,要怎么才能停止聲音的播放我是用了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 ?3382次閱讀

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

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

    鴻蒙ListContainer粘性頭部裝飾器組件

    TabList+PageSlider 聯(lián)動,實(shí)現(xiàn)翻頁滑動效果,TabList 實(shí)現(xiàn) page 頁 title 自定義顯示,PageSlid
    的頭像 發(fā)表于 10-19 09:06 ?1424次閱讀

    基于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次下載