探秘鴻蒙 HarmonyOS NEXT:實戰用 CodeGenie 構建鴻蒙應用頁面

在開發鴻蒙應用時,你是否也曾為一個頁面的布局反復調整?是否還在為查 API、寫模板代碼而浪費大量時間?今天帶大家實戰體驗一下鴻蒙官方的 AI 編程助手——CodeGenie(代碼精靈) ,如何從 0 到 1 快速構建一個完整頁面!幫助入門開發者快速上手,了解如何通過 AI 輔助完成頁面開發的整個流程。

本文將帶你用自然語言和 CodeGenie 聊聊天,就能自動生成一個完整的新聞列表頁面,體驗一下CodeGenie的高效性!


目標

我們打算做一個新聞類 App 的首頁頁面,包含以下內容:

  • 一個頂部標題欄
  • 一個搜索框,支持輸入關鍵詞
  • 一個可滑動的新聞卡片列表(帶標題、圖片、描述)
  • 下拉刷新功能

這個頁面是大部分內容類應用的常見模板,CodeGenie 可以輕松幫我們構建出來。


環境準備

在開始之前,請確保你已經準備好以下開發環境:

項目狀態
DevEco Studio已安裝(建議使用 4.0+ 版本)
CodeGenie 插件已啟用(可在設置中打開)
項目類型ArkTS 應用項目

創建一個新的項目(例如叫 NewsApp),并進入主頁面代碼文件(例如 NewsListPage.ets)。


第一步:打開 CodeGenie 聊天界面,輸入需求描述

打開 DevEco Studio,點擊工具欄右上角的 CodeGenie 圖標,進入聊天界面,輸入我們的頁面需求:

請幫我用 ArkTS 創建一個完整的新聞列表頁面demo,包含標題欄、搜索框、可滑動的新聞卡片列表(含標題、圖片、描述),并支持下拉刷新。

幾秒鐘后,CodeGenie 就會自動生成一個完整的頁面代碼。如果沒有達到預期效果,那么可能是描述的不優雅,我們可以換個問法,需求描述很重要!


第二步:查看并理解生成的代碼

在這里插入圖片描述

CodeGenie 給出的頁面代碼結構清晰,具備完整的 UI 和邏輯,例如:

@Entry
@Component
struct NewsListPage {@State newsList: Array<NewsItem> = [{ title: '新聞標題1', image: $r('app.media.news1'), description: '新聞描述1' },{ title: '新聞標題2', image: $r('app.media.news2'), description: '新聞描述2' },{ title: '新聞標題3', image: $r('app.media.news3'), description: '新聞描述3' },// 更多新聞...]build() {Column() {// 標題欄NavigationBar() {Text('新聞列表').fontSize(20).fontWeight(FontWeight.Bold)}// 搜索框SearchBar()// 可滑動的新聞卡片列表List() {ForEach(this.newsList, (newsItem: NewsItem) => {NewsCard(newsItem)})}.onScrollIndex((start: number) => {console.info(`開始索引: ${start}`)}).listDirection(Axis.Vertical).edgeEffect(EdgeEffect.Spring).scrollBar(BarState.Off).friction(0.6).onScroll((scrollOffset: number) => {console.info(`滾動偏移量: ${scrollOffset}`)}).onScrollEdge((edge: Edge) => {console.info(`滾動到邊緣: ${edge}`)}).onScrollStop(() => {console.info('滾動停止')}).enableScrollInteraction(true)}.width('100%').height('100%').backgroundColor(Color.White)}
}interface NewsItem {title: stringimage: Resourcedescription: string
}@Component
struct NavigationBar {build() {Row() {Text('新聞列表').fontSize(20).fontWeight(FontWeight.Bold)}.height(50).backgroundColor(Color.Blue).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center)}
}@Component
struct SearchBar {build() {Row() {Image($r('app.media.search')).width(20).height(20).margin({ left: 10 })TextInput().placeholder('搜索新聞...').width('80%').height(40).backgroundColor(Color.White).fontSize(16).fontColor(Color.Black).borderRadius(20).margin({ left: 10 })}.height(40).backgroundColor(Color.White).justifyContent(FlexAlign.Center).alignItems(VerticalAlign.Center).padding(10)}
}@Component
struct NewsCard {@Prop newsItem: NewsItembuild() {Column() {Image(this.newsItem.image).width('100%').height(200).objectFit(ImageFit.Cover)Text(this.newsItem.title).fontSize(18).fontWeight(FontWeight.Bold).margin({ top: 10 })Text(this.newsItem.description).fontSize(16).margin({ top: 5 })}.width('100%').height('100%').backgroundColor(Color.White).padding(10).borderRadius(10).margin({ bottom: 10 })}
}

以下是對代碼的解釋:
在這個示例中:

  • 使用@Entry和@Component裝飾器定義了一個名為NewsListPage的組件,作為頁面的入口。
  • 使用@State裝飾器定義了一個newsList狀態,用于存儲新聞列表數據。
  • 使用Column布局組件來組織頁面內容,包括標題欄、搜索框和新聞卡片列表。
  • 使用NavigationBar組件來顯示頁面的標題。
  • 使用SearchBar組件來顯示搜索框。
  • 使用List組件來創建一個可滑動的新聞卡片列表,并使用ForEach循環渲染每個新聞卡片。
  • 使用NewsCard組件來顯示每個新聞卡片的內容,包括標題、圖片和描述。
  • 使用各種屬性和事件處理函數來控制組件的樣式和行為。

CodeGenie 回答的還是很完善的,非常的棒!


第三步:調整圖片資源或組件API代碼

CodeGenie 幫我們生成的代碼,還是有一些小瑕疵的,需要我們手動去調整,例如一些圖片資源或者組件的API方法不支持等等

生成的代碼中默認使用了本地圖片 app.media.news1。你可以按如下方式替換為真實的網絡圖片或資源文件:

? 方法一:放入本地資源目錄

將圖片放到 resources/base/media/ 目錄中,并確保路徑正確,例如:

image: '/resources/base/media/news1.png'

? 方法二:使用網絡圖片鏈接

image: 'https://example.com/news-image1.jpg'

第四步:運行并預覽頁面

在 DevEco Studio 中點擊“預覽”或運行到模擬器,頁面應當呈現如下結構:

  • 頂部:“新聞列表”標題
  • 中部:可輸入的搜索框
  • 下方:可滾動的新聞卡片列表,每項展示圖片、標題與描述
  • 下拉操作:觸發刷新邏輯

恭喜你,短短幾分鐘就完成了一個頁面的搭建!


拓展功能建議

有了基礎頁面,你可以繼續和 CodeGenie 聊天,添加新功能。例如:

想法示例指令
增加分頁加載“為新聞列表添加分頁加載邏輯,滑到底部時加載更多”
優化樣式“請讓卡片增加圓角和陰影,更加卡片化”
跳轉到詳情頁“點擊新聞項跳轉到詳情頁,傳遞新聞數據”
網絡請求替代模擬數據“把 newsList 替換為從遠程接口請求的新聞列表”

CodeGenie 會像開發搭檔一樣,持續幫你完善頁面!


總結:AI + 開發 = 高效創作

通過這次實戰我們可以看到,CodeGenie 不僅可以理解自然語言,還能真正參與到項目搭建的每一步

  • 快速生成結構清晰、功能完整的頁面
  • 理解鴻蒙 ArkTS 的開發模式與組件體系
  • 幫助開發者省去大量重復勞動,專注業務邏輯
  • 對初學者友好,對資深開發者更是降本增效

如果你還沒有試過 CodeGenie,現在就打開 DevEco Studio,動動嘴皮子或者敲幾行字,就能把一個頁面做出來!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84329.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84329.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DBAPI如何優雅的獲取單條數據

API如何優雅的獲取單條數據 案例一 對于查詢類API&#xff0c;查詢的是單條數據&#xff0c;比如根據主鍵ID查詢用戶信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默認返回的數據格式是多條的&#xff0c;如下&#xff1a; {&qu…

使用Whisper本地部署實現香港版粵語+英語混合語音轉文字方案

今天要一個非常好的朋友有個工作&#xff0c;就是要把醫院醫生診斷的說話記錄轉成文字&#xff0c;之前都是她本人一句一句的聽&#xff0c;然后記錄下來的&#xff0c;我想通過ai 來解決這個問題。 她的需求如下&#xff1a; 不能把數據傳到網上&#xff0c;隱私問題所以需要…

案例分享--汽車制動卡鉗DIC測量

制動系統是汽車的主要組成部分&#xff0c;是汽車的主要安全部件之一。隨著車輛性能的不斷提高&#xff0c;車速不斷提升&#xff0c;對車輛的制動系統也隨之提出了更高要求&#xff0c;因此了解車輛制動系統中每個部件的動態行為成為了制動系統優化的主要途徑&#xff0c;同時…

保姆級教程:在無網絡無顯卡的Windows電腦的vscode本地部署deepseek

文章目錄 1 前言2 部署流程2.1 準備工作2.2 Ollama2.2.1 使用有網絡的電腦下載Ollama2.2.2 安裝Ollama&#xff08;有網絡的電腦&#xff09;2.2.3 安裝Ollama&#xff08;無網絡的電腦&#xff09;2.2.4 安裝驗證2.2.5 修改大模型安裝位置2.2.6 下載Deepseek模型 2.3 將deepse…

【Redis技術進階之路】「原理分析系列開篇」分析客戶端和服務端網絡誦信交互實現(服務端執行命令請求的過程 - 初始化服務器)

服務端執行命令請求的過程 【專欄簡介】【技術大綱】【專欄目標】【目標人群】1. Redis愛好者與社區成員2. 后端開發和系統架構師3. 計算機專業的本科生及研究生 初始化服務器1. 初始化服務器狀態結構初始化RedisServer變量 2. 加載相關系統配置和用戶配置參數定制化配置參數案…

VB.net復制Ntag213卡寫入UID

本示例使用的發卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、讀取舊Ntag卡的UID和數據 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click輕松讀卡技術支持:網站:Dim i, j As IntegerDim cardidhex, …

SQL SERVER 數據庫遷移的三種方法!

要將SQL Server從研發環境的把數據庫結構(不含數據)遷移至生產環境,可通過以下幾種方法實現。以下是具體操作步驟及適用場景: ?? 一、使用SSMS圖形界面生成結構腳本(推薦新手) 通過SQL Server Management Studio的生成腳本向導,僅導出數據庫架構: ??連接測試庫??…

C# 快速檢測 PDF 是否加密,并驗證正確密碼

引言&#xff1a;為什么需要檢測PDF加密狀態&#xff1f; 在批量文檔處理系統&#xff08;如 OCR 文字識別、內容提取、格式轉換&#xff09;中&#xff0c;加密 PDF 無法直接操作。檢測加密狀態可提前篩選文件&#xff0c;避免流程因密碼驗證失敗而中斷。 本文使用 Free Spire…

(33)課54:3 張表的 join-on 連接舉例,多表查詢總結。數據庫編程補述及游標綜合例題。靜態 sqL與動態sqL(可帶參數)

&#xff08;112&#xff09;3 張表的 join-on 連接舉例 &#xff1a; &#xff08;113&#xff09; 多表查詢總結 &#xff1a; &#xff08;114&#xff09;數據庫編程補述 &#xff1a; 綜合例題 &#xff1a; 以上沒有動手練習&#xff0c;不知道這樣的語法是否…

再見 Navicat!一款開源的 Web 數據庫管理工具!

大家好&#xff0c;我是 Java陳序員。 在日常的開發工作中&#xff0c;常常需要與各種數據庫打交道。而為了提高工作效率&#xff0c;常常會使用一些可視化工具進行操作數據庫。 今天&#xff0c;給大家介紹一款開源的數據庫管理工具&#xff0c;無需下載安裝軟件&#xff0c…

OkHttp 中實現斷點續傳 demo

在 OkHttp 中實現斷點續傳主要通過以下步驟完成&#xff0c;核心是利用 HTTP 協議的 Range 請求頭指定下載范圍&#xff1a; 實現原理 Range 請求頭&#xff1a;向服務器請求文件的特定字節范圍&#xff08;如 Range: bytes1024-&#xff09; 本地文件記錄&#xff1a;保存已…

函數中的Callable

在編程中&#xff0c;?Callable&#xff08;可調用對象&#xff09;?? 是指任何可以通過 () 操作符調用的對象。在函數和類設計的上下文中&#xff0c;Callable 通常指代可以被調用的實體&#xff0c;例如函數、方法、Lambda表達式或實現了 __call__ 方法的對象。以下是詳細…

MySQL學習之觸發器

文章目錄 前言什么是觸發器&#xff08;Trigger&#xff09;&#xff1f;觸發器的特點 MySQL中觸發器的用法創建NEW 與 OLD舉例其他操作 注意事項后續內容參考目錄 前言 閱讀本文前請注意最后編輯時間&#xff0c;文章內容可能與目前最新的技術發展情況相去甚遠。歡迎各位評論…

AIGC 基礎篇 Python基礎 04 for循環與while循環

今天&#xff0c;我們來講Python里面的循環部分 1.for循環 for i in range(1,10,2):print(i) 這是一個簡單但是完整的for循環&#xff0c;里面包含了for循環的所有結構 首先注意格式是“for 變量 in range(取得到的起始值&#xff0c;取不到的終點值&#xff0c;步長)” …

安寶特方案丨XRSOP人員作業標準化管理平臺:AR智慧點檢驗收套件

在選煤廠、化工廠、鋼鐵廠等過程生產型企業&#xff0c;其生產設備的運行效率和非計劃停機對工業制造效益有較大影響。 隨著企業自動化和智能化建設的推進&#xff0c;需提前預防假檢、錯檢、漏檢&#xff0c;推動智慧生產運維系統數據的流動和現場賦能應用。同時&#xff0c;…

每日算法 -【Swift 算法】三數之和最接近目標值

?? Swift 實現:三數之和最接近目標值(3Sum Closest) ? 前言 在算法學習過程中,經典的“三數之和”系列題目是很多人通往進階路上的一道坎。今天我們來介紹其中一個非常實用的變種問題 —— 三數之和最接近目標值(3Sum Closest),并使用 Swift 實現一個高效的解法。 …

python打卡day50@浙大疏錦行

知識點回顧&#xff1a; resnet結構解析CBAM放置位置的思考針對預訓練模型的訓練策略 差異化學習率三階段微調 ps&#xff1a;今日的代碼訓練時長較長&#xff0c;3080ti大概需要40min的訓練時長 作業&#xff1a; 好好理解下resnet18的模型結構嘗試對vgg16cbam進行微調策略 R…

虛幻引擎5-Unreal Engine筆記之SET節點的輸出引腳獲取設置后的最新變量值

虛幻引擎5-Unreal Engine筆記之SET節點的輸出引腳獲取設置后的最新變量值 code review! 一個變量的“SET”節點 retrieve 是動詞&#xff0c;意思是“檢索、獲取、取回”。 retrieves 只是當主語是第三人稱單數&#xff08;比如 he、she、it 或單個人/物&#xff09;時使用的…

編譯原理實驗 之 TINY 解釋測試目標代碼

文章目錄 實驗任務1任務2 本次的實驗是在前三次TINYC的基礎上的一個測試&#xff0c;所以完成前三次的實驗是基礎 編譯原理 之 實驗一 編譯原理實驗 之 Tiny C語言編譯程序實驗 語法分析 編譯原理實驗 之 TINY 之 語義分析&#xff08;第二次作業 首先將新的文件復制到先前的…

CanFestival移植到STM32G4

文章目錄 一、準備工作二、軟件配置三、移植CanFestival參考 一、準備工作 1、獲取Canfestival源碼 2、Python下載 3、wxPython下載 4、CanFestival字典生成 5、安裝參考 Python2.7.15及wxPython2.8百度云盤下載地址&#xff1a;https://pan.baidu.com/s/1bRS403m4B31m4ovSJ-_…