1 卡片介紹
使用ArkTS語言,實現一個導航與內容二級聯動的效果。
2 標題
二級聯動(ArkTS)
3 介紹
介紹了如何基于List組件實現一個導航和內容的二級聯動效果。樣例主要包含以下功能:
- 切換左側導航,右側滾動到對應的內容。
- 滾動右側的內容,左側會切換對應的導航。
效果如圖所示:
相關概念
- [List]:列表包含一系列相同寬度的列表項。適合連續、多行呈現同類數據,例如圖片和文本。
- [ListItemGroup]:該組件用來展示列表item分組,寬度默認充滿List組件,必須配合List組件來使用。
4 環境搭建
軟件要求
- [DevEco Studio]版本:DevEco Studio 3.1 Release。
- OpenHarmony SDK版本:API version 9。
硬件要求
- 開發板類型:[潤和RK3568開發板]。
- OpenHarmony系統:3.2 Release。
環境搭建
完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:
- [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:
- 搭建燒錄環境。
- [完成DevEco Device Tool的安裝]
- [完成RK3568開發板的燒錄]
- 搭建開發環境。
5 代碼結構解讀
本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。
├──entry/src/main/ets // 代碼區
│ ├──common
│ │ └──constants
│ │ └──Constants.ets // 常量類
│ ├──entryability
│ │ └──EntryAbility.ts // 程序入口類
│ ├──pages
│ │ └──IndexPage.ets // 二級聯動頁面入口
│ ├──view
│ │ ├──ClassifyItem.ets // 課程分類組件
│ │ └──CourseItem.ets // 課程信息組件
│ └──viewmodel
│ ├──ClassifyModel.ets // 導航Model
│ ├──ClassifyViewModel.ets // 導航ViewModel
│ ├──CourseModel.ets // 課程內容Model
│ └──LinkDataModel.ets // 數據源Model
└──entry/src/main/resources // 資源文件
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
6 二級聯動實現
界面整體使用Row組件實現橫向布局,分為左右兩部分。均使用List組件實現對導航和內容的數據展示,導航部分固定寬度,內容部分自適應屏幕剩余寬度并用ListItemGroup完成每個導航下的內容布局。
Row() {
List({ scroller: this.classifyScroller }) {
ForEach(this.classifyList, (item: ClassifyModel, index: number) = > {
ListItem() {
ClassifyItem({
classifyName: item.classifyName,
isSelected: this.currentClassify === index,
onClickAction: () = > this.classifyChangeAction(index, true)
})
}
}, (item: ClassifyModel) = > item.classifyName + this.currentClassify)
}
List({ scroller: this.scroller }) {
ForEach(this.classifyList, (classifyItem: ClassifyModel) = > {
ListItemGroup({
header: this.ClassifyHeader(classifyItem.classifyName),
space: Constants.COURSE_ITEM_PADDING
}) {
ForEach(classifyItem.courseList, (courseItem: CourseModel) = > {
ListItem() {
CourseItem({ itemStr: JSON.stringify(courseItem) })
}
}, courseItem = > courseItem.courseId)
}
}, item = > item.classifyId)
}
.sticky(StickyStyle.Header)
.layoutWeight(1)
.edgeEffect(EdgeEffect.None)
.onScrollIndex((start: number) = > this.classifyChangeAction(start, false))
}
點擊左側導航時,右側內容區域通過scrollToIndex方法跳轉到對應的內容頁面,并改變導航的選中狀態。同理在滾動右側內容的過程中,如果當前展示的ListItemGroup發生改變時,修改左側導航的選中狀態,并滾到到對應的導航item。
classifyChangeAction(index: number, isClassify: boolean) {
if (this.currentClassify !== index) {
// change the classify status
this.currentClassify = index;
if (isClassify) {
// scroll the course scroll
this.scroller.scrollToIndex(index);
} else {
// scroll the classify scroll
this.classifyScroller.scrollToIndex(index);
}
}
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
開發板
+關注
關注
25文章
5050瀏覽量
97471 -
OpenHarmony
+關注
關注
25文章
3722瀏覽量
16317
發布評論請先 登錄
相關推薦
THS3001級聯組成放大電路,實際接通后第二級有明顯發熱,為什么?
實際接通后第二級有明顯發熱。單獨測試第一級沒問題,對第二級直接輸入第一級的輸出相關參數依然正常。可是兩塊一旦級聯第
發表于 09-06 06:08
HarmonyOS流轉卡片設計規范分享
服務流轉是 HarmonyOS 的分布式操作方式。流轉能力打破設備界限,多設備聯動,使原子化服務可分可合、可流轉,實現如郵件跨設備編輯、多設備協同健身、多屏游戲等分布式業務。開發者通過嵌入流轉圖標
發表于 12-15 14:57
HarmonyOS分享卡片設計規范學習分享
Share 入口圖標,根據業務特性和體驗繼承性,您可以將 Huawei Share 圖標作為一級界面的分享入口,或在二級界面與其他分享方式并列。為了保證在不同服務內一致的分享體驗,若需顯示 Huawei
發表于 12-16 15:32
HarmonyOS/OpenHarmony應用開發-FA卡片開發體驗
:HarmonyOSOpenHarmony應用開發-FA卡片開發體驗.docx示例代碼:https://gitee.com/jltfcloudcn/jump_to/tree/maste
發表于 12-06 14:48
全國計算機二級試題全集
全國計算機二級試題含有從,二級筆試試題BASIC,筆試試題FORTRAN,1994-2002年的二級C、二級Pascal、二級QBasic、
發表于 12-30 10:20
?27次下載
HarmonyOS服務卡片如何換膚
關注HarmonyOS的小伙伴肯定對服務卡片已經很熟悉了。服務卡片(也簡稱為“卡片”)是FA(FeatureAbility,元服務)的一種界面展示形式,將FA的重要信息或操作前置到
基于openharmony第三方組件適配移植實現二級聯動列表
項目介紹 項目名稱:Linkage-RecyclerView 所屬系列:openharmony的第三方組件適配移植 功能:實現二級聯動列表 項目移植狀態:主功能完成 調用差異:無 開發版本:sdk6
發表于 03-30 10:40
?1次下載
用Java開發HarmonyOS服務卡片
卡片服務:由卡片提供方開發者實現,開發者實現 onCreateForm、onUpdateForm 和 onDeleteForm 處理創建卡片
評論