在开发鸿蒙应用时,你是否也曾为一个页面的布局反复调整?是否还在为查 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-_…