当前位置: 首页 > article >正文

鸿蒙(HarmonyOS)应用开发——基础语法例子

前言

在前面几篇文章中,已经介绍了ArkTs中装饰器、声明式UI、自定义组件。知识都是很零散的,我们可以做一个Demo。现在我们一步一步完成下面这样的页面
在这里插入图片描述

创建ToDo项目

在这里插入图片描述
输入项目的名称,存放的位置,点击完成。IDE创建项目,并加载依赖
在这里插入图片描述

创建自定义组件

页面中 我们分为两部分,一部分是标题、一部分待办信息;我们创建两个自定义组件,一个用来显示标题,一个用来显示待办信息

创建自定义组件文件夹

在ets 文件夹下创建 components 文件夹(这个文件夹,可以换成自己想要的名字)
在这里插入图片描述

创建组件

创建HeaderComponent和ToDoItemComponent 两个组件
在这里插入图片描述

编写标题组件

@Component
export  struct HeaderComponent{
  @Link title:string;

  build(){
    Text(this.title)
      .width("95%")
      .textAlign(TextAlign.Start)
      .fontSize(26)
      .fontWeight(FontWeight.Bold)
  }
}

从上面的代码中,我们可以看出 使用@Component 和struct 自定义组件;export 将组件导出供父组件使用; @Link 标题文件的双向绑定
使用Text 属性来创建文字

编写待办信息组件


@Component
export struct ToDoItemComponent{
  @State isChoice:boolean= false;
  private  title?:string ;

  build(){
    Row(){
      if(!this.isChoice){
        Image($r('app.media.circle'))
          .objectFit(ImageFit.Contain)
          .width(30)
          .height(30)
          .margin("5 0")
        Text(this.title)
      }else{
        Image($r('app.media.circle_active'))
          .objectFit(ImageFit.Contain)
          .width(30)
          .height(30)
          .margin("5 0")
        Text(this.title)
          .fontColor("#67cfe7")
          .decoration({type:TextDecorationType.LineThrough})
      }
    }.borderRadius(24)
    .width("92%")
    .padding("15 30")
    .backgroundColor("#ffffff")
    .margin(15)
    .onClick(()=>{
      this.isChoice=!this.isChoice
    })
  }
}

其中 Image($r(‘app.media.circle_active’)),是从资源文件夹中引入图片文件
在这里插入图片描述

编写入口页面

import {HeaderComponent} from '../components/HeaderComponent'
import {ToDoItemComponent} from '../components/ToDoItemComponent'
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  @State title:string ="待办";
  TaskContent:Array<String> =['6点起床','早餐','练字','学习ArkTS','放松']
  @State isChoice:boolean=false;

  build() {
    Column(){
      HeaderComponent({title:$title})

      
      ForEach(this.TaskContent,(item:string)=>{
        ToDoItemComponent({title:item})
      },(item:String)=>JSON.stringify(item))
      
    }.padding(15)
    .height("100%")
    .width("100%")
    .backgroundColor("#efefef")
  }
}

通过import 引入 自定义组件;
TaskContent 创建显示待办信息数组数据;
ForEach 循环 列表数据

编写完成之后,就完成了整个页面的编写。


http://www.kler.cn/a/145620.html

相关文章:

  • mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用
  • 使用 Python 获取 1688 商品快递费用 API 接口的示例代码解析
  • DDD实战课 笔记
  • C语言操作符(上)
  • AIGC视频生成国产之光:ByteDance的PixelDance模型
  • SQL-leetcode—1164. 指定日期的产品价格
  • Vuejs+ElementUI搭建后台管理系统框架
  • 我在Vscode学OpenCV 几何变换(缩放、翻转、仿射变换、透视、重映射)
  • 小黑子—Maven高级
  • 使用Rust开发小游戏
  • 【图论】关键路径求法c++
  • 运用工具Postman快速导出python接口测试脚本
  • Unity - Graphic解析
  • 【数据结构】树与二叉树(廿五):树搜索指定数据域的结点(算法FindTarget)
  • 线性表,也是Java中数组的知识点!
  • 【云原生 Prometheus篇】Prometheus的动态服务发现机制与认证配置
  • 51单片机蜂鸣器发出悦耳的声音
  • cocos游戏引擎制作的滚动框地图防止误点操作的简单方法
  • vue.config.js详细说明
  • 基于jmeter的性能全流程测试
  • Java算法小结-Arrays的应用
  • SASS的导入文件详细教程
  • 每日一题(LeetCode)----哈希表--有效的字母异位词
  • 【LabVIEW学习】3.labview制作安装程序
  • C语言标准
  • TikTok 将开源“云中和”边缘加速器