在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

harmonyos開發者聯盟

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-06 15:27 ? 次閱讀

介紹

本篇Codelab是基于Flex容器組件,實現彈性布局效果。彈性布局的特點是頁面元素的寬度按照屏幕分辨率進行適配調整,但整體布局不變。

相關概念

  • [Flex組件]:以彈性方式布局子組件的容器組件。
  • [Search組件]:搜索框組件,適用于瀏覽器的搜索內容輸入框等應用場景。
  • [Text組件]:顯示一段文本的組件。
  • [Image組件]:圖片組件,支持本地圖片和網絡圖片的渲染展示。
  • [Scroll組件]:可滑動的容器組件,當子組件的布局尺寸超過父組件的視口時,內容可以滑動。
  • [條件渲染]:條件渲染可根據應用的不同狀態,使用if、else和else if渲染對應狀態下的UI內容。
  • [循環渲染]:基于數組類型數據執行循環渲染。

環境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開發板類型:[潤和RK3568開發板]。
  • OpenHarmony系統:3.2 Release。

環境搭建

完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:
  2. 搭建燒錄環境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發板的燒錄]
  3. 搭建開發環境。
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”)。
    3. 工程創建完成后,選擇使用[真機進行調測]。
    4. 鴻蒙開發指導文檔:[qr23.cn/FBD4cY]

代碼結構解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。

├──entry/src/main/ets	           // 代碼區
│  ├──common
│  │  └──constants
│  │     └──StyleConstants.ets     // 樣式常量類 
│  ├──entryability
│  │  └──EntryAbility.ts           // 程序入口類
│  ├──pages
│  │  └──HomePage.ets              // 主界面	
│  ├──view
│  │  ├──ClearSearch.ets           // 清除歷史記錄自定義組件
│  │  ├──FlexLayout.ets            // 彈性布局自定義組件
│  │  └──SearchInput.ets           // 搜索輸入框自定義組件
│  └──viewmodel
│     └──SearchViewModel.ets       // 歷史搜索數據類
└──entry/src/main/resources        // 資源文件目錄

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789v直接拿`

搜狗高速瀏覽器截圖20240326151450.png

編寫搜索框布局

在這個章節中,我們需要完成搜索框布局的編寫,并實現文本輸入和點擊事件。效果如圖所示:

在ets目錄下,點擊鼠標右鍵 > New > Directory,新建名為view的自定義子組件目錄。然后在view目錄下,點擊鼠標右鍵 > New > ArkTS File,新建名為SearchInput的ArkTS文件。最后在SearchInput.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一個自定義組件,組件名為SearchInput。
  2. 在build()中使用Flex作為容器組件,實現子組件水平排列。
  3. 使用Search組件作為搜索框布局,Text組件作為搜索文本按鈕布局。
// SearchInput.ets
@Component
export default struct SearchInput {
  build() {
    Flex({ alignItems: ItemAlign.Center }) {
      // 搜索框布局
      Search()
        ...
	
      // 搜索文本按鈕布局
      Text($r('app.string.search'))
        ...
    }
    ...
  }
}

接下來我們實現Search組件的樣式及輸入功能,并將輸入的數據添加到數組searchArr中:

  1. 使用@State定義變量searchInput,存儲搜索框輸入的文本內容。
  2. 在Search組件參數中,將變量searchInput賦值給參數value,參數placeholder填寫提示內容,參數icon表示搜索圖標路徑。
  3. 設置高度height、寬度width、背景顏色backgroundColor、提示內容顏色placeholderColor等屬性。
  4. 設置onChange事件,將用戶輸入的內容綁定到變量searchInput中。
  5. 使用@Link定義一個數組變量searchArr,點擊搜索文本按鈕時,將用戶輸入的內容即searchInput的值,通過數組的unshift()方法,在數組searchArr的頭部添加數據。
// SearchInput.ets
@Component
export default struct SearchInput {
  @State searchInput: string = '';
  @Link searchArr: Array< string >;

  build() {
    Flex({ alignItems: ItemAlign.Center }) {
      // 搜索框布局
      Search({
        value: this.searchInput,
        placeholder: StyleConstants.SEARCH_PLACEHOLDER,
        icon: StyleConstants.SEARCH_ICON
      })
        .placeholderColor($r('app.color.placeholder_color'))
        .placeholderFont({ size: $r('app.float.font_size') })
        .textFont({ size: $r('app.float.font_size') })
        .height(StyleConstants.SEARCH_HEIGHT)
        .width(StyleConstants.SEARCH_WIDTH)
        .backgroundColor(Color.White)
        ...
        .onChange((value: string) = > {
          this.searchInput = value;
        })

      // 搜索文本按鈕布局
      Text($r('app.string.search'))
        ...
        .onClick(() = > {
          if (this.searchInput !== '' && this.searchInput.trim().length > 0) {
            // 使用unshift在數組頭部添加數據
            this.searchArr.unshift(this.searchInput.trim());
          }
          this.searchInput = '';
        })
    }
    ...
  }
}

然后我們在HomePage.ets首頁中,引入SearchInput搜索輸入框自定義組件。

  1. 使用@State定義數組變量searchArr,存放最近搜索文本內容。
  2. 在構造參數中,使用$符號引用@State修飾的變量searchArr,將父組件的變量searchArr與子組件searchArr變量關聯起來。
// HomePage.ets
import SearchInput from '../view/SearchInput';

@Entry
@Component
struct HomePage {
  @State searchArr: Array< string > = SearchViewModel.getSearchArrData();

  build() {
    Column() {
      // 搜索輸入框自定義組件
      SearchInput({ searchArr: $searchArr })
    }
    ...
  }
}

編寫清除記錄布局

在這個章節中,我們需要完成清除記錄布局的編寫,并實現條件渲染。效果如圖所示:

在view目錄下,點擊鼠標右鍵 > New > ArkTS File,新建名為ClearSearch的ArkTS文件。然后在ClearSearch.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一個自定義組件,組件名為ClearSearch。
  2. 在build()中使用Flex作為容器組件,實現子組件水平排列。
  3. 使用if/else實現條件渲染:當有搜索內容時,顯示最近搜索的文本和清除搜索內容圖標;否則就顯示沒有搜索內容和相關圖片。
  4. 使用@Link定義數組變量searchArr,當點擊清除搜索內容圖標時,所有最近搜索內容清空。
// ClearSearch.ets
@Component
export default struct ClearSearch {
  // 搜索內容數組
  @Link searchArr: Array< string >;

  build() {
    Flex({ alignItems: ItemAlign.Center }) {
      if (this.searchArr.length > 0) {
        Text($r('app.string.recent_searches'))
          ...

        Image($r('app.media.ic_delete'))
          ...
          .onClick(() = > {
            this.searchArr.splice(0, this.searchArr.length);
            this.searchArr.length = 0;
          })
      } else {
        Column() {
          Image($r('app.media.ic_no_search'))
            ...

          Text($r('app.string.no_search_content'))
            ...
        }
        ...
      }
    }
  }
}

然后我們在HomePage.ets首頁中,引入ClearSearch搜索輸入框自定義組件。

// HomePage.ets
import SearchInput from '../view/SearchInput';
import ClearSearch from '../view/ClearSearch';

@Entry
@Component
struct HomePage {
  @State searchArr: Array< string > = SearchViewModel.getSearchArrData();

  build() {
    Column() {
      // 搜索輸入框自定義組件
      SearchInput({ searchArr: $searchArr })
      // 清除搜索記錄自定義組件
      ClearSearch({ searchArr: $searchArr })
    }
    ...
  }
}

編寫彈性布局

在這個章節中,我們需要完成彈性布局的功能樣式,并實現循環渲染。效果如圖所示:

在view目錄下,點擊鼠標右鍵 > New > ArkTS File,新建名為FlexLayout的ArkTS文件。然后在FlexLayout.ets文件中,逐步完成如下操作:

  1. 使用@Component新增一個自定義組件,組件名為FlexLayout。
  2. 在build()中使用Flex作為容器,設置參數wrap為FlexWrap.Wrap時為彈性布局,實現自動換行。
  3. 使用if實現條件渲染,當有搜索內容時,顯示最近搜索的所有內容。
  4. 使用@Link定義數組變量searchArr,表示子組件要顯示的所有最近搜索文本內容。
  5. 使用ForEach遍歷變量searchArr,實現循環渲染。
// FlexLayout.ets
@Component
export default struct FlexLayout {
  @Link searchArr: Array< string >;

  build() {
    Scroll() {
      // Flex布局, wrap設置成FlexWrap.Wrap時為彈性布局
      Flex({ justifyContent: FlexAlign.Start, wrap: FlexWrap.Wrap }) {
        if (this.searchArr.length > 0) {
          // 循環渲染		
          ForEach(this.searchArr, (item: string) = > {
            Text(`${item}`)
              ...
          }, (item: string) = > JSON.stringify(item))
        }
      }
      ...
    }
  }
}

然后我們在HomePage.ets首頁中,引入FlexLayout搜索輸入框自定義組件。

// HomePage.ets
import SearchInput from '../view/SearchInput';
import ClearSearch from '../view/ClearSearch';
import FlexLayout from '../view/FlexLayout';

@Entry
@Component
struct HomePage {
  @State searchArr: Array< string > = SearchViewModel.getSearchArrData();

  build() {
    Column() {
      // 搜索輸入框自定義組件
      SearchInput({ searchArr: $searchArr })
      // 清除搜索記錄自定義組件
      ClearSearch({ searchArr: $searchArr })
      // 彈性布局自定義組件
      FlexLayout({ searchArr: $searchArr })
    }
    ...
  }
}

審核編輯 黃宇

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

    關注

    25

    文章

    5050

    瀏覽量

    97471
  • 開發者
    +關注

    關注

    1

    文章

    575

    瀏覽量

    17011
  • 鴻蒙
    +關注

    關注

    57

    文章

    2352

    瀏覽量

    42858
  • HarmonyOS
    +關注

    關注

    79

    文章

    1975

    瀏覽量

    30194
  • OpenHarmony
    +關注

    關注

    25

    文章

    3722

    瀏覽量

    16317
收藏 人收藏

    評論

    相關推薦

    線下 | HarmonyOS 2.0 手機開發者 Beta 活動

    /consumer/cn/activity/101608287564994799歡迎在鏈接中點擊 “我要報名”按鈕,注冊成為華為開發者聯盟會員后免費報名。報名成功后,我們將以官方郵件和短信的形式通知您報名結果。歡迎關注HarmonyOS
    發表于 12-21 10:11

    HarmonyOS開發者

    HarmonyOS開發者HarmonyOS設備開發學習路線HarmonyOS 2.0如約而至,內存在128KB~128MB的終端設備廠商有
    發表于 07-22 09:53

    絕對干貨!HarmonyOS開發者日資料全公開,鴻蒙開發者都在看

    731HarmonyOS開發者日大會PPT資料全在這了,想要了解的小伙伴可以自行下載啦~下載資料的小伙伴還可以在評論區回復領取5個積分哦1、HarmonyOS 職業認證解讀:該主題是開發者
    發表于 08-04 14:36

    請問海外開發者如何開發HarmonyOS應用?

    海外開發者如何開發HarmonyOS應用?
    發表于 06-02 15:50

    喜報|HarmonyOS開發者社區連獲業內獎項,持續深耕開發者生態

    臨近年末,各大平臺陸續揭曉年度榜單,表彰了具備強大影響力與做出突出貢獻的優秀項目與團隊,而HarmonyOS開發者社區作為技術分享,學習和展示的平臺,輸出高質量技術文章百余篇,連續獲得業內各大
    發表于 01-19 14:32

    華為開發者HarmonyOS零基礎入門:四步實現HarmonyOS應用

    華為開發者HarmonyOS零基礎入門:四步實現HarmonyOS應用,可以自定義主鍵實際應用在開發者界面。
    的頭像 發表于 10-23 10:05 ?1948次閱讀
    華為<b class='flag-5'>開發者</b><b class='flag-5'>HarmonyOS</b>零基礎入門:四步實現<b class='flag-5'>HarmonyOS</b>應用

    華為開發者大會2021 HarmonyOS 3開發者預覽版

    華為開發者大會2021上,隨著全新的 HarmonyOS 3 開發者預覽版發布,HarmonyOS 應用與服務開發工具套件全家桶也全面升級,
    的頭像 發表于 10-23 11:20 ?1358次閱讀
    華為<b class='flag-5'>開發者</b>大會2021 <b class='flag-5'>HarmonyOS</b> 3<b class='flag-5'>開發者</b>預覽版

    華為開發者分論壇HarmonyOS學生公開課-10分鐘成為HarmonyOS開發者

    2021華為開發者分論壇HarmonyOS學生公開課-10分鐘成為HarmonyOS開發者
    的頭像 發表于 10-24 11:03 ?1933次閱讀
    華為<b class='flag-5'>開發者</b>分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-10分鐘成為<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發者</b>

    華為開發者分論壇HarmonyOS學生公開課-如何學習HarmonyOS應用開發

    2021華為開發者分論壇HarmonyOS學生公開課-如何學習HarmonyOS應用開發
    的頭像 發表于 10-24 11:09 ?2138次閱讀
    華為<b class='flag-5'>開發者</b>分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-如何學習<b class='flag-5'>HarmonyOS</b>應用<b class='flag-5'>開發</b>?

    2021華為開發者大會HarmonyOS學生公開課上教你10分鐘成為HarmonyOS開發者

    2021華為開發者大會HarmonyOS學生公開課上教你10分鐘成為HarmonyOS開發者 學習HarmonyOS應用
    的頭像 發表于 10-24 11:03 ?2136次閱讀
    2021華為<b class='flag-5'>開發者</b>大會<b class='flag-5'>HarmonyOS</b>學生公開課上教你10分鐘成為<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發者</b>

    華為開發者分論壇HarmonyOS學生公開課-開發者成長圖譜

    2021華為開發者分論壇HarmonyOS學生公開課-開發者成長圖譜
    的頭像 發表于 10-24 11:25 ?1976次閱讀
    華為<b class='flag-5'>開發者</b>分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-<b class='flag-5'>開發者</b>成長圖譜

    華為開發者分論壇HarmonyOS學生公開課-HarmonyOS開發者三大成長階段與學習資源

    2021華為開發者分論壇HarmonyOS學生公開課-HarmonyOS開發者三大成長階段與學習資源
    的頭像 發表于 10-24 11:43 ?2035次閱讀
    華為<b class='flag-5'>開發者</b>分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發者</b>三大成長階段與學習資源

    面向HarmonyOS開發者HarmonyOS 3.0 Beta介紹

    2021年10月,我們面向開發者發布了HarmonyOS 3.0 Developer Preview版,但開發的腳步永不停歇,現在我們又更新了API版本,配套發布了HarmonyOS
    的頭像 發表于 07-06 20:34 ?3308次閱讀

    HarmonyOS年度開發者活動,賦能逾萬名開發者開啟HarmonyOS學習之旅

    11月4日-11月6日,華為開發者大會2022(Together)在東莞松山湖成功舉辦!與此同時,HarmonyOS重磅推出HarmonyOS第一課、ArkUI入門訓練營、ArkUI開發
    的頭像 發表于 12-19 11:08 ?970次閱讀
    <b class='flag-5'>HarmonyOS</b>年度<b class='flag-5'>開發者</b>活動,賦能逾萬名<b class='flag-5'>開發者</b>開啟<b class='flag-5'>HarmonyOS</b>學習之旅

    HarmonyOS 4.0開發者Beta版來了!

    目前 HarmonyOS 4.0 開發者 Beta 版招募活動分批進行,專屬 OTA 升級優先對已在華為應用市場上架了應用的開發者 / 合作伙伴開放,未上架過華為應用市場的開發者請耐心
    的頭像 發表于 06-25 16:40 ?3423次閱讀
    <b class='flag-5'>HarmonyOS</b> 4.0<b class='flag-5'>開發者</b>Beta版來了!
    主站蜘蛛池模板: 免费在线观看污视频| 婷婷综合久久中文字幕| 性色视频免费| 九九99久久精品午夜剧场免费| 黄视频网站免费| 日本成人视屏| 天天影视亚洲| 性做久久久久| 欧美一级视频精品观看| 午夜免费剧场| 日本免费在线视频| 欧美色久| 欧美一级黄色片在线观看| 国产成人精品一区| 久久狠色噜噜狠狠狠狠97| 久久久香蕉视频| 亚洲伊人99综合网| 成人久久精品| 黄h视频在线观看视频| 色吊丝中文字幕| 天天爽夜夜爽视频| 国产毛片久久国产| 国内在线观看精品免费视频 | 91高清在线成人免费观看| 欧美30p| 日日噜噜噜夜夜爽爽狠狠图片| 在线免费国产| 男男污肉高h坐便器调教| 久久黄色毛片| 正在播放欧美| 日本成人免费| 久久天天躁狠狠躁夜夜免费观看| 亚洲一区二区三区电影| 在线观看精品国产入口| 亚洲一区二区三区不卡视频| 毛片爱做的片| 51精品国产| 欧美视频一区在线观看| 国产巨大bbbb俄罗斯| 四虎久久精品国产| 日本黄页网站在线观看|