HarmonyOS鸿蒙Next万能卡片-Codelabs挑战赛限行日历

HarmonyOS鸿蒙Next万能卡片-Codelabs挑战赛限行日历

应用简介

本文章是参加“【有奖速戳【Codelabs限时挑战赛】和李洋老师手把手开发一个简单的鸿蒙万能卡片”活动写的一个应用介绍,活动地址:

https://developer.huawei.com/consumer/cn/forum/topic/0204119610018312075?fid=0101271690375130218

本文档通过学习服务卡片的开发,自己制作了一个简单的限行日历,主页显示当前日期、星期和限行信息,以及一些随机的谚语,背景会根据不同的星期自动变换。服务卡片支持五种类型,分别为1x2.显示星期,1x2.显示限号,2x2.显示日期,2x4.显示限号和谚语,4x4显示日期和限号。其中星期卡片每天会自动变换颜色,不同颜色代表不同星期。

效果预览

效果预览

简要介绍

程序的主页面显示当日的星期,日期和限行号码,以及每日一言。不同日期显示的背景图片会自动变化,

星期六背景的主页

星期六背景的主页

星期日背景的主页

星期日背景的主页

长按桌面的图标,进入服务卡片会有五种服务卡片,

1x2 大小/ 2x2大小 / 2x4大小 / 4x4大小

1x2 大小 2x2大小

卡片添加到桌面后,会根据当前日期进行变化,

比如星期五,限行为3和8

星期五,限行为3和8

比如星期日,不限行

星期日,不限行

代码分析

卡片都是使用的ets语言开发的,

1x2限号卡片的页面布局如下,

@State dayIndex : number = 0
@State bgColor : string = "#000000"
@State curWeekday : string = "星期一"
@State currentLimit : string = "5 和 0"

build() {
  Row() {
    Column() {
      Text("限行:" + this.currentLimit)
        .fontSize($r('app.float.font_size'))
        .fontColor(Color.Red)
        .fontWeight(FontWeight.Bold)
    }
    .width(this.FULL_WIDTH_PERCENT)
  }
  .height(this.FULL_HEIGHT_PERCENT)
  .onClick(() => {
    postCardAction(this, {
      "action": this.ACTION_TYPE,
      "abilityName": this.ABILITY_NAME,
      "params": {
        "message": this.MESSAGE
      }
    });
  })
}

在组件的aboutToAppear函数中进行一些数据的初始话,

aboutToAppear() {
  let date = new Date();
  this.dayIndex = date.getDay()
  this.curWeekday = this.weekday_array[date.getDay()]
  this.currentLimit = this.limit_array[date.getDay()]
}

所有卡片的配置都在resources\base\profile\form_config.json中,

{
  "forms": [
    {
      "name": "widget2x2",
      "description": "当前日期",
      "src": "./ets/widget/pages/WidgetCard_2x2.ets",
      "uiSyntax": "arkts",
      "window": {
        "designWidth": 720,
        "autoDesignWidth": true
      },
      "colorMode": "auto",
      "isDefault": true,
      "updateEnabled": true,
      "scheduledUpdateTime": "10:30",
      "updateDuration": 1,
      "defaultDimension": "2*2",
      "supportDimensions": [
        "2*2"
      ]
    },
    // 其他卡片配置...
  ]
}

项目总结

服务卡片支持js和ets两种语言的开发,以前只支持js语言,ets语言是新版本3.1中才支持的,以前使用js语言开发过一次服务卡片,这次体验的是采用ets开发的,对比了一下,感觉ets比js开发上要简单方便很多,效率明显提高了。

代码地址

https://gitee.com/droidzxy/servicecard/tree/master/CalendarCard


更多关于HarmonyOS鸿蒙Next万能卡片-Codelabs挑战赛限行日历的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

学习了

更多关于HarmonyOS鸿蒙Next万能卡片-Codelabs挑战赛限行日历的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS鸿蒙Next万能卡片-Codelabs挑战赛中的限行日历项目,旨在通过鸿蒙系统的万能卡片功能,实现城市限行信息的实时展示。开发者可以利用鸿蒙的分布式能力,将限行日历卡片推送到不同设备,如手机、平板或智能手表,方便用户随时查看。通过Codelabs提供的开发工具和API,开发者可以快速构建并优化限行日历卡片,提升用户体验。该项目不仅展示了鸿蒙系统的技术优势,也为开发者提供了实践创新的机会。

回到顶部