鸿蒙模仿miui(鸿蒙HarmonyOS开发入门项目“待办事项”之模拟数据)

承接上文,我们第一个项目已经成功的搭建了,我们看到了,经典的Hello World出现在了鸿蒙系统的手机里。本文将开始进行更加深入的了解HarmonyOS的开发技术。不了解如何创建工程的小伙伴可以看:鸿蒙HarmonyOS第一个项目Hello World

我们先看下完成后整体的样子:

目前只是模拟数据,将来可以添加、删除。慢慢来,让我们一步一步的掌握。接下来,我们开始吧。

修改Hello World项目,构建基础页面

将Hello World项目中的Index.ets文件中build函数里的内容删除,换成:

/** * 页面入口,页面组件 */ @Entry @Compone联通大流量卡nt struct Index { build() { Column() { Text(待办事项) .fontSize(28fp) .lineHeight(33vp) .fontWeight(FontWeight.Bold) .width(80%) .margin({ top: 24vp, bottom: 12vp }) .textAlign(TextAlign.Start) Divider() } .width(100%) .height(100%) .backgroundColor(#F1F3F5) } }

运行一下,看看显示:

出现了标题,但是没有待办事项的内容,接下来联通大流量卡,我们创建一个自定义组件,用来描述待办事项的Item。在Index.ets文件中,在最下面,添加:

/** * 自定义TodoItem组件 */ @Component struct ToDoItem { build() { } }

整体截图:

构建事项记录

目前所有组件在一个文件中,将来,我们可以拆分成多个模块,多个文件中,不着急,一步一步来。每个ToDoItem都是一条记录,每个记录都包含了一个状态、事项标题:

该组件中应有:

点击标题,则表示完成待办,再点击则表示未完成。事项标题应该是外面传进来的值。

因此,我们加一个布尔变量,用来标记状态,一个标题变量联通大流量卡,用来显示内容。再看布局,每个事项,都是一个行布局,都在一个行里,因此build函数中的布局是Row,Row里是一个图标,一个标题文本。

运行后的结果

/** * 页面入口,页面组件 */ @Entry @Component struct Index { build() { Column() { Text(待办事项) .fontSize(28fp) .lineHeight(33vp) .fontWeight(FontWeight.Bold) .width(80%) .margin({ top: 24联通大流量卡vp, bottom: 12vp }) .textAlign(TextAlign.Start) Divider() ToDoItem() } .width(100%) .height(100%) .backgroundColor(#F1F3F5) } } /** * 自定义TodoItem组件 */ @Component struct ToDoItem { private content?: string = ArkTs学习; // @State表示状态标识,arkUI可以根据带有这种标识的变量的改变联通大流量卡,而重新渲染界面。类似MVVM思想 @State isComplete: boolean = false; build() { Row() { Image($r(app.media.ic_default)) .objectFit(ImageFit.Contain) .width(28vp) .height(28vp) .margin(28vp) Text(this.content) .fontSize(20fp) .fontWeight(500) } .borderRadius(24) .bac联通大流量卡kgroundColor($r(app.color.start_window_background)) .width(93%) .height(65vp) } }

代码中,我们可以看到,content写死了,而且Index组件中,只写了一个ToDoItem,页面中出现了一条事项。效果出来了,但我们需要的是多个事项,并且事项可以点击。

多条事项记录

从组件的角度出发,事项的结构是相同的,不同的只是组件内部的数据,因此可以使用循环,将Index组件中的ToDoItem循环输出,正好arkTS为我们准备了默认的循环组件: ForEach。

我们创建一个事项任务数组,里面都是事联通大流量卡项标题。并在UI中,声明了一个ForEach组件,回调函数中,加入了自定义的组件ToDoItem。运行看下效果

非常好,效果出来了

将标题带入组件中,并添加点击事件,改变状态

目前还没有把定义的标题,带入到组件中,我们在自定义组件中,去掉写死的内容,并在Index中,加入内容的值,运行:

现在外部的数据可以进入自定义的组件中了,已经可以正确的显示出来了。就差点击事件了!在ToDoItem组件中,添加点击事件,事件回调很简单,就是改变状态,取反。

接下来,我们需要根据状态,修改:

状态图标的样式;文字背景色、透明度、横线;

我们对图片的UI进行调整,增加状态判断:

对文字进行判断:

运行一下,看看结果:

非常好,点联通大流量卡击事件也出来了。接近完成了,最后我们再修改下行间距,让它看起来更好看一点。

至此,我们的待办事项的模拟数据就完成了,接下来,我们逐渐丰富功能,让它更实用,更好用。若想更深入的了解鸿蒙HarmonyOS的开发,欢迎订阅我的个人专栏:

鸿蒙模仿miui(鸿蒙HarmonyOS开发入门项目“待办事项”之模拟数据)
专栏
鸿蒙HarmonyOS+Netty实战聊天室
作者:温馨的酱牛肉
19.9币
0人已购
查看

原创不容易,鉴于本人水平有限,文中如有错误之处欢迎大家指正。欢迎大家点个关注,我将继续为大家分享相关的技术内容。


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/54476.html

(0)
sunyaqunsunyaqun
上一篇 2024年6月23日
下一篇 2024年6月23日

相关推荐

发表回复

登录后才能评论