成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何開發(fā)一個(gè)OpenHarmony購物APP導(dǎo)航頁面

系統(tǒng) OpenHarmony
一款購物App界面通常包括了掃一掃功能、搜索框、輪播圖、標(biāo)簽頁、商品列表等功能,我們以橘子購物為例,介紹一下如何使用ArkTS開發(fā)一個(gè)購物類App。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

購物類App是現(xiàn)在最常用的一類App,也是我們?cè)趹?yīng)用開發(fā)中經(jīng)常遇到的場景。一款購物App界面通常包括了掃一掃功能、搜索框、輪播圖、標(biāo)簽頁、商品列表等功能,我們以橘子購物為例,介紹一下如何使用ArkTS開發(fā)一個(gè)購物類App。首先我們可以看一下最終實(shí)現(xiàn)效果:

如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)

如上圖所示,首先最外層是一個(gè)可以切換切換的標(biāo)簽頁,分別對(duì)應(yīng)首頁、新品、購物車以及我的等四個(gè)欄目。頁面整體結(jié)構(gòu)可以通過Tabs組件實(shí)現(xiàn),通過閱讀Tabs組件的API文檔,注意到Tabs包含子組件TabContent即可實(shí)現(xiàn)選項(xiàng)卡效果。我們可以快速構(gòu)造出如下所示的整體結(jié)構(gòu):

private controller: TabsController = new TabsController()

  Column() {
    Tabs({
      barPosition: BarPosition.END,
      controller: this.controller
    }) {
      TabContent() {
      }

      TabContent() {
      }

      TabContent() {
      }

      TabContent() {
      }
    }
  }.width('100%')

其中barPosition控制選擇欄位置,BarPosition.END表示選擇欄在頁面下方,BarPosition.START表示選擇欄在頁面上方,同時(shí)定義一個(gè)TabsController來控制Tabs切換邏輯。圖中選擇欄各個(gè)欄目都有相同的結(jié)構(gòu),都是圖片加標(biāo)題,這部分樣式在TabContent的tabBar屬性中設(shè)計(jì),我們?nèi)缦率纠a使用@Builder裝飾方法來定義組件的聲明式UI描述。

@Builder TabBarBuilder(index: number) {
      Column() {
      Image(this.getTabBarImage(index))
      Text(TAB_TITLE_DATA[index].title)
      }
      .justifyContent(FlexAlign.Center)
      .width('100%')
      .height('100%')
      .onClick(() => {
      this.controller.changeIndex(index)
      })
  }
  ...
  TabContent() {
        MainPage({ url: this.url })
      }.tabBar(this.TabBarBuilder(0))
  TabContent() {
        NewProduct({ url: this.url })
      }.tabBar(this.TabBarBuilder(1))
  TabContent() {
        ShopCart({ url: this.url })
      }.tabBar(this.TabBarBuilder(2))
  TabContent() {
        User()
      }.tabBar(this.TabBarBuilder(3))

其中MainPage,NewProduct,ShopCart,User表示各個(gè)頁面的具體內(nèi)容。常見的App通常是通過點(diǎn)擊切換的,而不能通過滑動(dòng)切換,如果想要禁用Tab的滑動(dòng)切換可以使用將Tab的scrollable屬性設(shè)計(jì)為false來實(shí)現(xiàn)。Tabs實(shí)現(xiàn)四個(gè)欄目切換達(dá)到上圖效果的整體代碼可以參考NavigationHomePage。

實(shí)現(xiàn)完最外層容器的標(biāo)簽頁切換介紹后,我們?cè)賹?duì)主頁進(jìn)行簡單介紹。首先對(duì)主頁內(nèi)容從上到下可以進(jìn)行一個(gè)簡單分解:

如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)

一號(hào)框中包含兩張圖片,使用兩個(gè)image組件,其中二維碼圖片可以在onClick事件加入跳轉(zhuǎn)邏輯跳轉(zhuǎn)到二維碼模塊。

二號(hào)框?yàn)橐粋€(gè)搜索框,使用TextInput組件。(示例代碼中無具體功能,通過Image+Text進(jìn)行展示)。

這兩部分代碼可以參考TitleBar。

根據(jù)我們以往使用購物App的經(jīng)驗(yàn),我們可以知道下滑過程中,最上方圖片以及搜索框是一直存在的,即一二號(hào)框固定不動(dòng),三四五號(hào)框可以上下滑動(dòng),要實(shí)現(xiàn)這種效果只需要將后面三個(gè)框放到 Scroll組件中即可。

三號(hào)框可以使用Tab組件,參考代碼見MainPage,示例代碼中未實(shí)現(xiàn)具體功能,使用了Text進(jìn)行展示。

四號(hào)框輪播圖中使用Swiper實(shí)現(xiàn)輪播圖效果,實(shí)現(xiàn)代碼可以參考Swiper。

五號(hào)框是主頁下半部分商品展示,這一部分看作一個(gè)Tabs,4個(gè)標(biāo)簽分別對(duì)應(yīng)全部、精選、新品、實(shí)惠,每個(gè)Tab中包含了一個(gè)商品列表,列表中整齊地排列著各個(gè)商品元素,這類像柵格一樣的場景我們可以通過GridRow嵌套GridCol實(shí)現(xiàn),具體代碼見HomePageContent。

綜上所述,可以簡單地畫出導(dǎo)航頁對(duì)應(yīng)的結(jié)構(gòu)圖:

如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)如何開發(fā)一個(gè)OpenHarmony購物app導(dǎo)航頁面-開源基礎(chǔ)軟件社區(qū)

效果對(duì)比

我們將橘子購物實(shí)現(xiàn)效果與市面是常用的兩款購物APP京東與閑魚界面放在一起進(jìn)行一個(gè)簡單對(duì)比,我們可以發(fā)現(xiàn)作為一個(gè)示例,在美觀方面與真實(shí)APP還是存在不小的差距,但是整體結(jié)構(gòu)上基本相同,能夠?qū)崿F(xiàn)一個(gè)購物類應(yīng)用的界面。
對(duì)于想要快速實(shí)現(xiàn)整體框架效果的讀者,還可以使用如下代碼通過Navigation+Tabs方式來快速實(shí)現(xiàn)。

完整實(shí)現(xiàn)代碼

@Entry
    @Component
    struct NavigationExample {
      @State currentIndex: number = 0
      @State Build: Array<Object> = [
        {
          text: 'home',
          num: 0
        },
        {
          text: 'app',
          num: 1
        },
        {
          text: 'cart',
          num: 2
        },
        {
          text: 'user',
          num: 3
        }
      ]

      @Builder NavigationTitle() {
        Column() {
          Text('Title')
            .height('100%')
        }.alignItems(HorizontalAlign.Start)
      }

      @Builder NavigationToolbar() {
        Row() {
          ForEach(this.Build, item => {
            Column() {
              Text(item.text)
                .fontColor(this.currentIndex == item.num ? '#007DFF' : '#182431')
                .fontSize(10)
                .lineHeight(14)
                .fontWeight(500)
                .margin({ top: 3 })
            }.width(104).height(56)
            .onClick(() => {
              this.currentIndex = item.num
            })
          })
        }.margin({ left: 24 })
      }

      build() {
        Column() {
          Navigation() {
            TextInput({ placeholder: 'search...' })
              .width('90%')
              .height(40)
              .backgroundColor('#FFFFFF')
              .margin({ top: 8 })
            Tabs({
              index:this.currentIndex
            }){
              TabContent(){
                Text('0')
              }
              TabContent(){
                Text('1')
              }
              TabContent(){
                Text('2')
              }
              TabContent(){
                Text('3')
              }
            }
          }
          .title(this.NavigationTitle)
          .toolBar(this.NavigationToolbar)
        }.width('100%').height('100%').backgroundColor('#F1F3F5')
      }
    }

實(shí)現(xiàn)效果

<img title=“” src=“OrangeShopping/04-navigationpage/demo.jpeg” alt=“image” width=“326” data-align=“center”>

讀者可以在這個(gè)基礎(chǔ)上添加所需要的組件,也可以完成一個(gè)購物類App界面。

本文供稿:https://gitee.com/pan-jiufeng。

想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2018-01-08 14:31:09

Electron桌面APP前端

2022-06-16 15:07:06

布局結(jié)構(gòu)app

2021-02-07 13:22:53

微信服務(wù)導(dǎo)航頁移動(dòng)應(yīng)用

2023-04-11 09:12:31

北向應(yīng)用開發(fā)鴻蒙

2020-10-13 10:49:23

APPAndiroid終端

2018-10-11 21:00:18

2014-07-02 10:03:42

App推廣渠道

2018-06-19 16:04:27

Dubbo應(yīng)用Java

2022-10-08 16:26:23

APP應(yīng)用開發(fā)

2021-01-28 06:11:40

導(dǎo)航組件Sidenav Javascript

2022-08-08 19:46:26

ArkUI鴻蒙

2014-03-12 10:00:26

移動(dòng)開發(fā)跨平臺(tái)

2015-03-10 11:21:44

JavaScript組JavaScript

2023-03-17 18:33:12

ChatGPTLLM應(yīng)用

2022-02-22 20:35:22

公鑰私鑰數(shù)據(jù)

2015-11-06 10:14:36

APP虛擬服務(wù)器

2017-03-29 15:50:09

AndroidApp框架

2023-06-06 15:38:28

HTMLCSS開發(fā)

2021-07-28 14:59:08

鴻蒙HarmonyOS應(yīng)用

2015-08-07 10:17:30

云應(yīng)用云計(jì)算架構(gòu)流暢云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本精品一区二区 | 久久性av| 日韩欧美在线播放 | 久久久久久久久精 | 国内av在线| 亚洲一二视频 | 日韩有码在线观看 | 亚洲精品视频在线看 | 日韩一区二区在线免费观看 | 黄色一级毛片 | 日韩三级免费网站 | 久久精品无码一区二区三区 | 日韩有码一区 | 色婷婷影院 | 黄色成人免费看 | 中文字幕亚洲一区二区三区 | 精品一区二区三区中文字幕 | 自拍偷拍亚洲视频 | 亚洲精品一区二区 | 久久精品一区二区 | 精品一区精品二区 | 精品久久久久久久久久久久久久久久久 | 日本在线精品视频 | 亚洲欧美国产毛片在线 | 草久久久 | 美女在线一区二区 | 狠狠干天天干 | 亚洲精品91| 99精品欧美一区二区三区综合在线 | 亚洲午夜精品一区二区三区 | 中文字幕国产第一页 | 精品国产一区二区三区久久久四川 | 九九视频在线观看视频6 | 中文字幕一区二区三区在线视频 | 天天玩天天操天天干 | 久久一区 | 国产一区日韩在线 | 精品国产欧美一区二区 | 金莲网 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕日韩一区二区 |