鸿蒙原生开发手记:徒步迹 - ArkUI 声明式UI基础组件

发布时间:2026/7/14 2:26:42
鸿蒙原生开发手记:徒步迹 - ArkUI 声明式UI基础组件 学习 ArkUI 核心组件构建徒步迹的用户界面基础一、前言ArkUI 是鸿蒙原生应用的声明式 UI 框架采用类似 SwiftUI 和 Jetpack Compose 的声明式编程范式。开发者只需描述 UI 的最终状态框架自动处理状态变化时的界面更新。本文将系统介绍 ArkUI 的基础组件包括布局容器、文本、图片、按钮、输入框等并结合徒步迹的实际场景演示用法。二、组件基础结构2.1 组件树ArkUI 中每个页面由组件树构成组件通过链式调用设置属性EntryComponentstruct ExamplePage{build(){Column(){// 父组件列布局Text(Hello)// 子组件1文本.fontSize(20)// 链式属性设置.fontColor(#333);Button(点击)// 子组件2按钮.onClick((){});}.width(100%)// 父组件属性.padding(16);}}2.2 组件分类ArkUI 组件按功能可分为布局组件Column、Row、Stack、Flex、Grid、List基础组件Text、Image、Button、TextInput、Slider展示组件Progress、LoadingProgress、Badge、Panel交互组件Dialog、Menu、Picker、DatePicker导航组件Navigation、Tab、NavRouter三、布局容器3.1 Column - 垂直布局Column 是最常用的垂直排列布局子组件从上到下排列// 徒步迹 - 个人中心头部布局Column(){// 头像Image($r(app.media.avatar)).width(80).height(80).borderRadius(40);// 用户名Text(徒步爱好者).fontSize(20).fontWeight(FontWeight.Bold).fontColor($r(app.color.text_primary));// 统计信息Text(累计徒步 86km).fontSize(14).fontColor($r(app.color.text_secondary));}.width(100%).alignItems(HorizontalAlign.Center)// 居中对齐.padding(24);3.2 Row - 水平布局Row 用于水平排列子组件// 徒步迹 - 今日概览统计行Row(){this.StatItem(,8,642,步数);this.StatItem(,5.2,距离);this.StatItem(,320,卡路里);}.width(100%).justifyContent(FlexAlign.SpaceAround);// 均匀分布3.3 Stack - 层叠布局Stack 用于组件叠加类似 CSS 的 position: absolute// 徒步迹 - 路线卡片顶部区域Stack(){// 背景图片Image($r(app.media.route_bg)).width(100%).height(140).objectFit(ImageFit.Cover);// 难度标签叠加在图片上Text(中等).fontSize(12).fontColor(Color.White).backgroundColor($r(app.color.warning_color)).padding({left:10,right:10,top:4,bottom:4}).borderRadius(10).position({top:8,right:8});// 绝对定位}.width(100%).height(140);3.4 Flex - 弹性布局Flex 提供了更灵活的布局控制Flex({direction:FlexDirection.Row,// 主轴方向wrap:FlexWrap.Wrap,// 是否换行justifyContent:FlexAlign.Center,// 主轴对齐alignItems:ItemAlign.Center,// 交叉轴对齐}){Text(标签1).padding(8).backgroundColor(#E8F5E9).borderRadius(4);Text(标签2).padding(8).backgroundColor(#E3F2FD).borderRadius(4);Text(标签3).padding(8).backgroundColor(#FFF3E0).borderRadius(4);}四、基础组件4.1 Text - 文本ArkUI 中最常用的文本组件// 基本用法Text(徒步迹).fontSize(24)// 字号.fontWeight(FontWeight.Bold)// 加粗.fontColor($r(app.color.primary_color));// 取色// 多行文本Text(这是一条风景优美的徒步路线沿途经过森林和溪流).fontSize(14).fontColor($r(app.color.text_secondary)).maxLines(2)// 最多2行.textOverflow({overflow:TextOverflow.Ellipsis});// 溢出省略// 富文本部分样式Text(){Span(徒步)// 内联片段.fontSize(16).fontColor($r(app.color.primary_color));Span(迹).fontSize(20).fontColor($r(app.color.accent_color));}4.2 Image - 图片// 加载资源图片Image($r(app.media.app_icon)).width(100).height(100).borderRadius(16).objectFit(ImageFit.Cover);// 裁剪模式// 加载网络图片需申请网络权限Image(https://example.com/photo.jpg).width(100%).height(200).objectFit(ImageFit.Cover);4.3 Button - 按钮// 文本按钮Button(开始徒步).width(200).height(48).backgroundColor($r(app.color.primary_color)).borderRadius(24).fontColor(Color.White).fontSize(16).onClick((){console.log(开始记录轨迹);});// 自定义内容按钮Button(){Row(){Image($r(app.media.app_icon)).width(18).height(18);Text(创建团队).fontSize(14).fontColor(Color.White);}.alignItems(HorizontalAlign.Center);}.width(90%).height(44).backgroundColor($r(app.color.primary_color)).borderRadius(22);4.4 TextInput - 文本输入框// 普通输入TextInput({placeholder:请输入手机号}).width(100%).height(48).backgroundColor(#F5F5F5).borderRadius(12).padding({left:16}).type(InputType.PhoneNumber)// 输入类型.maxLength(11)// 最大长度.onChange((value:string){console.log(输入:${value});});// 密码输入TextInput({placeholder:请输入密码}).width(100%).height(48).backgroundColor(#F5F5F5).borderRadius(12).padding({left:16}).type(InputType.Password)// 密码类型.showPasswordIcon(true);// 显示密码切换五、列表组件5.1 ForEach - 循环渲染Stateroutes:HikingRoute[][{id:1,name:香山徒步},{id:2,name:奥森公园},{id:3,name:百望山},];build(){Column(){ForEach(this.routes,(route:HikingRoute){Text(route.name).fontSize(16).padding(12).width(100%);},(route:HikingRoute)route.id.toString());}}5.2 List - 高效长列表List(){ForEach(this.routes,(route:HikingRoute){ListItem(){RouteCard({route:route});}},(route:HikingRoute)route.id.toString());}.divider({strokeWidth:1,color:#EEE})// 分割线.edgeEffect(EdgeEffect.Spring);// 弹性效果六、修饰符与链式调用ArkUI 采用链式调用来设置组件属性这是最常用的编程模式// 单行链式Text(徒步迹).fontSize(20).fontColor(#4CAF50).fontWeight(FontWeight.Bold);// 多行链式推荐可读性更好Text(徒步迹).fontSize(20).fontColor($r(app.color.primary_color)).fontWeight(FontWeight.Bold).margin({top:12,bottom:12}).padding({left:16,right:16}).backgroundColor(#F5F5F5).borderRadius(8).textAlign(TextAlign.Center).width(100%);七、实战徒步迹首页概览卡片综合运用所学组件实现徒步迹首页的今日概览卡片Componentstruct TodayOverview{Propsteps:number0;Propdistance:number0;Propcalories:number0;build(){Column(){Text(今日概览).fontSize(16).fontWeight(FontWeight.Medium).width(100%);Row(){// 步数Column(){Text().fontSize(28);Text(${this.steps}).fontSize(22).fontWeight(FontWeight.Bold);Text(步).fontSize(12).fontColor(#999);}.alignItems(HorizontalAlign.Center).layoutWeight(1);// 距离Column(){Text().fontSize(28);Text(${this.distance.toFixed(1)}).fontSize(22).fontWeight(FontWeight.Bold);Text(km).fontSize(12).fontColor(#999);}.alignItems(HorizontalAlign.Center).layoutWeight(1);// 卡路里Column(){Text().fontSize(28);Text(${this.calories}).fontSize(22).fontWeight(FontWeight.Bold);Text(kcal).fontSize(12).fontColor(#999);}.alignItems(HorizontalAlign.Center).layoutWeight(1);}.width(100%).margin({top:16}).padding(12);}.width(100%).padding(16).backgroundColor(Color.White).borderRadius(16);}}// 使用EntryComponentstruct HomePage{build(){Column(){TodayOverview({steps:8642,distance:5.2,calories:320});}.width(100%).height(100%).backgroundColor(#F5F5F5).padding(16);}}这段代码在 App 中的实际效果可以参考项目截图八、总结本文介绍了 ArkUI 的核心基础组件包括 Column、Row、Stack 布局容器Text、Image、Button、TextInput 等基础组件以及 ForEach、List 等列表组件。掌握这些组件后你已经可以构建大部分应用界面。下一篇文章我们将学习 Stage 模型和 UIAbility 的深入应用理解鸿蒙应用的运行机制。下一篇预告鸿蒙原生开发手机徒步迹 - Stage 模型与UIAbility详解有问题欢迎在评论区交流探讨。

相关新闻

幻兽帕鲁风灵月影修改器正式版下载46项修改器

幻兽帕鲁风灵月影修改器正式版下载46项修改器

下载链接:幻兽帕鲁风灵月影 一、 极致生存与探索体系(基础开局) 这套修改器能让玩家在帕鲁大陆横着走。无敌模式/无伤害判定、无限生命与无限护盾构筑了绝对的安全防线,彻底告别意外死亡;无限饱腹度、无限体力以及保持…

发布时间:2026/7/14 2:26:42
青海省建设网站企业怎么选才不踩坑?老程序员掏心窝子分享

青海省建设网站企业怎么选才不踩坑?老程序员掏心窝子分享

内容: 真的服了。 上周有个老乡找我,说要在西宁搞个电商,让我帮忙弄个网站。 我一听就头大。 不是我不帮,是现在的市场太乱了。 随便搜一下,青海省建设网站企业 那是一抓一大把。 报价从几千到几万都有。 差别咋那么大呢? 我就想问问,那些报价几千的,到底是在做网站还是…

发布时间:2026/7/14 2:26:21
福田做商城网站建设哪家服务周到?踩过坑才敢说的真话,别被低价忽悠了

福田做商城网站建设哪家服务周到?踩过坑才敢说的真话,别被低价忽悠了

标题:标题 关键词:关键词 内容:内容最近在福田这片写字楼群里,聊起做商城网站,大家眉头都皱成一团。不是怕花钱,是怕钱花了,网站跟个半成品似的,看着都闹心。很多人问我,福田做商城网站建设哪家服务周到?说实话,这问题真没标准答案,因为“周到”这词儿太虚了。我上个月…

发布时间:2026/7/14 2:25:18
找河南商都建设有限公司网站靠谱吗?老包工头掏心窝子说点真话

找河南商都建设有限公司网站靠谱吗?老包工头掏心窝子说点真话

最近好多朋友在后台私信我,问起那个河南商都建设有限公司网站。说是想看看这公司到底靠不靠谱,有没有什么黑历史。我也没藏着掖着,直接去扒拉了一圈他们的官网和公开信息。说实话,现在的互联网环境,想找个完全没毛病的建筑公司,比登天还难。但是,咱们做工程的,讲究的是…

发布时间:2026/7/14 19:25:49
别被忽悠了,专业营销的网站建设公司排名真没那么简单

别被忽悠了,专业营销的网站建设公司排名真没那么简单

说实话,很多人一上来就问。 有没有什么靠谱的名单? 最好直接给个一二三名。 这种心态,我懂。 毕竟时间宝贵,谁也不想踩坑。 但现实往往很骨感。 根本不存在绝对的排名。 那些列着“Top 10”的网页, 多半是广告。 或者是SEO做得太好的结果。 你信了,就输了。咱们得聊聊本质…

发布时间:2026/7/14 19:25:46
深圳开发网站建设哪家好?避开这些坑,老板才能少交智商税

深圳开发网站建设哪家好?避开这些坑,老板才能少交智商税

本文关键词:深圳开发网站建设哪家好做企业官网,最怕什么?怕遇到那种只会套模板的“流水线工人”。你花了几万块,拿回来的却是一个满屏广告、加载慢如蜗牛的垃圾页面。这种体验,客户看一眼就关,转化率几乎为零。在深圳,做网站的公司多如牛毛。从华强北的小作坊到南山科技…

发布时间:2026/7/14 19:25:44
广州力科网站建设公司:别被低价忽悠,揭秘外包建站那些让人头秃的坑

广州力科网站建设公司:别被低价忽悠,揭秘外包建站那些让人头秃的坑

上周三晚上十点,我还在改方案,客户老张突然打电话来,声音都在抖。他说之前找的那家报价两千的建站公司,网站打开全是乱码,后台还登不上去。我叹了口气,这已经是今年第三个找我救火的案例了。做这行久了,你会发现一个扎心的真相:很多老板以为建站就是买个域名、套个模板…

发布时间:2026/7/14 19:25:04
临沂做网站建设的公司别瞎选,这3个坑踩了真肉疼,血泪教训分享

临沂做网站建设的公司别瞎选,这3个坑踩了真肉疼,血泪教训分享

上周二下午,我在临沂兰山区一个写字楼里,看着对面那个老板对着电脑屏幕发呆。他刚花了两万块做了个官网,结果打开一看,满屏的广告弹窗,手机上看更是乱成一锅粥。他问我:“为啥别人家的网站那么清爽,我这就像个杂货铺?”我没说话,心里叹了口气。这种事儿,在临沂做网站…

发布时间:2026/7/14 19:24:11
中山皇冠建设开发有限公司网站靠谱吗?老施工队的大实话,别被忽悠了

中山皇冠建设开发有限公司网站靠谱吗?老施工队的大实话,别被忽悠了

本文关键词:中山皇冠建设开发有限公司网站装修这事儿,水太深了。我在这行摸爬滚打十几年,见过太多业主拿着合同哭诉。今天不整那些虚头巴脑的官话,就聊聊大家关心的中山皇冠建设开发有限公司网站。很多人搜这个词,心里其实没底。怕被坑,怕增项,怕最后装出来是个四不像。…

发布时间:2026/7/14 19:23:59
别被忽悠了!襄阳网络公司 网站建设 避坑指南:500块和5000块的真相

别被忽悠了!襄阳网络公司 网站建设 避坑指南:500块和5000块的真相

很多老板在找襄阳网络公司 网站建设 的时候,第一句话总是问:“做官网多少钱?”这时候如果你直接报个价,十有八九要挨骂。要么觉得你贵,要么觉得你便宜没好货。我在襄阳这行混了快十年,见过太多因为贪便宜最后网站打不开、数据泄露、甚至被扣尾款的案例。今天我不讲虚的,…

发布时间:2026/7/14 0:00:06
揭秘2024最大网站建设公司排名,小白避坑指南

揭秘2024最大网站建设公司排名,小白避坑指南

别再看那些所谓的“全球十大”榜单了。全是花钱买的广告位。你信了,你就输了。很多老板找公司建站,最后钱花了,网站还打不开。这不仅仅是技术问题,更是信息不对称的陷阱。今天我不讲虚的,直接告诉你怎么挑。毕竟,在“最大网站建设公司排名”里,最大的往往不是最好的。而…

发布时间:2026/7/14 0:00:44
别被那些吹上天的教程骗了,phpstudy建设网站视频教程里没人告诉你的三个血泪坑

别被那些吹上天的教程骗了,phpstudy建设网站视频教程里没人告诉你的三个血泪坑

本文关键词:phpstudy建设网站视频教程说实话,现在网上搜“phpstudy建设网站视频教程”,出来的东西真是一言难尽。要么就是几年前的老版本录屏,要么就是那种为了骗点击量,标题起得惊天动地,内容全是废话的营销号。我自己在本地搭环境的时候,也踩过不少坑,今天就不整那些…

发布时间:2026/7/14 0:02:45
别装了,你的学院网站建设推进会就是场大型尴尬现场

别装了,你的学院网站建设推进会就是场大型尴尬现场

看着后台那点可怜的访问量,你急不急?方案改了八版,还是没人看。今天这文,只说怎么把会开成,把事做成。上周去隔壁职院蹭会,那场面,真叫一个窒息。会议室里坐满了人,领导在台上讲PPT,底下的人不是在玩手机,就是在发呆。投影仪闪了两下,灭了。没人去修,接着讲。这种会…

发布时间:2026/7/14 8:24:42
七彩建设集团官方网站怎么找?避坑指南与真实体验分享

七彩建设集团官方网站怎么找?避坑指南与真实体验分享

找官网找得头大?这篇直接告诉你怎么辨别真伪,别被假网站坑了钱。昨天半夜两点,我还在电脑前盯着屏幕,心里那个急啊。家里装修刚进场,工长突然说需要确认一份材料清单,说是七彩建设那边要求的。我手忙脚乱地打开浏览器,搜了一堆“七彩建设”,结果出来一堆广告,什么“七…

发布时间:2026/7/14 2:42:40
找可信赖的龙岗网站建设公司?别踩坑,看这几点就够

找可信赖的龙岗网站建设公司?别踩坑,看这几点就够

做企业,网站就是脸面。 在龙岗,想找个靠谱的网站公司,真不容易。 市面上广告满天飞。 承诺得天花乱坠。 最后交付的东西,却让人想砸电脑。 今天不聊虚的。 只聊怎么避坑。 怎么找到真正可信赖的龙岗网站建设团队。先说个大实话。 别信什么“三天上线”。 那是骗小白的。 正…

发布时间:2026/7/14 19:05:38
建站7年才悟出的网站建设思路,别再花冤枉钱了

建站7年才悟出的网站建设思路,别再花冤枉钱了

做建站这行整整7年了。 见过太多老板花几万块, 最后做出来的网站像个垃圾场。 今天不整那些虚头巴脑的术语。 就聊聊我踩过的坑, 和真正能落地的网站建设思路。很多老板一上来就问: “多少钱能做个高大上的?” 我通常直接劝退。 因为方向错了, 你给再多钱也是打水漂。 真正…

发布时间:2026/7/14 13:09:53
合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

合肥的网站建设避坑指南:别被低价忽悠,这3个细节决定生死

做企业官网最怕什么?不是技术难,是交钱后没人管,或者上线一个月连个访客都没有。这篇东西不扯虚的,直接告诉你怎么在合肥找个靠谱的团队,或者自己怎么避坑。先说个大实话,我在合肥混这行五年多,见过太多老板因为贪便宜吃大亏。你去百度搜“合肥的网站建设”,出来一堆报…

发布时间:2026/7/10 18:05:06
别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

别被忽悠了!德州网站建设那些坑,我拿真金白银换来的教训

做这行久了,心里就憋着一股火。每次看到客户拿着网上抄来的模板,问我能不能做成“苹果官网”那种效果。我就想笑。真的,太想笑了。今天咱不整那些虚头巴脑的专业术语。就聊聊德州网站建设里,那些让人头秃的真实事儿。我有个客户,老张。他是做德州本地建材的,实在人。当初…

发布时间:2026/7/13 2:08:03