HarmonyOS NEXT 实战之元服务:静态案例效果--- 日出日落

news/2024/12/29 4:36:02/

背景:

前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考

先上本期效果图 ,里面图片自行替换

在这里插入图片描述

效果图1完整代码案例如下:

import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';@Extend(Text)
function text1() {.fontColor('#7F7F7F').fontSize(12)
}@Extend(Text)
function text2() {.fontColor('#181818').fontSize(20).margin({ top: 5 })
}@Entry
@Component
struct Index {@State message: string = '';build() {Column() {Text($r('app.string.EntryAbility_label')).fontSize(38).fontWeight(FontWeight.Bold).margin({ top: 60 })Text('距离日出还剩').fontSize(18).fontWeight(FontWeight.Bold).margin({ top: 10 })Text(this.message).fontSize(22).fontWeight(FontWeight.Bold).margin({ top: 10 })Text('更新于' + this.getHour()).fontSize(15).margin({ top: 8 }).fontColor('#222222')Stack() {Column() {Column() {}.width('60%').height(250).borderRadius(300).borderWidth(3).margin({ top: 80 }).borderColor('#5891E6').backgroundColor('#DFE7F2')}.width('90%').height(400).borderRadius(500).borderWidth(3).borderColor('#F0A12D').backgroundColor('#FDEDD4')Row() {Row() {Text() {ImageSpan($r('app.media.richu')).width(20).height(20)Span('07:16')}Text() {ImageSpan($r('app.media.yuechu')).width(20).height(20)Span('05:13')}}Row() {Text() {Span('15:16')ImageSpan($r('app.media.yueluo')).width(20).height(20)}Text() {Span('16:51')ImageSpan($r('app.media.riluo')).width(20).height(20)}}}.width('96%').justifyContent(FlexAlign.SpaceBetween).height(250).backgroundColor(Color.White).margin({ top: 150 }).alignItems(VerticalAlign.Top)// 金色时刻(傍晚 )盏ばⓁ餐天时刻// 蓝色时刻(傍晚)// 17:09-17:20Row() {Column() {Text('金色时刻(清晨)').text1()Text('06:56-07:57').text2()}Column() {Text('日照时长').text1()Text('9.6h').text2()}Column() {Text('蓝色时刻(清晨)').text1()Text('06:45-06:56').text2()}}.width('100%').justifyContent(FlexAlign.SpaceAround).margin({ top: 30 })Row() {Column() {Text('金色时刻(傍晚)').text1()Text('16:09-17:09').text2()}Column() {Text('中天时刻').text1()Text('12:03').text2()}Column() {Text('蓝色时刻(傍晚)').text1()Text('17:09-17:20').text2()}}.width('100%').justifyContent(FlexAlign.SpaceAround).margin({ top: 140 })}.margin({ top: 30 }).width('100%')}.height('100%').width('100%')}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();this.getDate();}/*** Sample code for using HUAWEI ID to log in to atomic service.* According to the Atomic Service Review Guide, when a atomic service has an account system,* the option to log in with a HUAWEI ID must be provided.* The following presets the atomic service to use the HUAWEI ID silent login function.* To enable the atomic service to log in successfully using the HUAWEI ID, please refer* to the HarmonyOS HUAWEI ID Access Guide to configure the client ID and fingerprint certificate.*/private loginWithHuaweiID() {// Create a login request and set parameterslet loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();// Whether to forcibly launch the HUAWEI ID login page when the user is not logged in with the HUAWEI IDloginRequest.forceLogin = false;// Execute login requestlet controller = new authentication.AuthenticationController();controller.executeRequest(loginRequest).then((data) => {let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;let authCode = loginWithHuaweiIDResponse.data?.authorizationCode;// Send authCode to the backend in exchange for unionID, session}).catch((error: BusinessError) => {hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {// HUAWEI ID is not logged in, it is recommended to jump to the login guide page}});}private getDate() {// 获取当前时间的时间戳(以毫秒为单位)const currentTime = Date.now();// 计算10个小时后的时间戳(1小时 = 3600000毫秒)let tenHoursLater = currentTime + 7 * 3600000;let interval: number;const updateCountdown = () => {// 获取当前时间的时间戳const now = Date.now();// 计算剩余时间(以毫秒为单位)const remainingTime = tenHoursLater - now;// 如果剩余时间小于等于0,说明倒计时结束,清除定时器并重新开始倒计时if (remainingTime <= 0) {clearInterval(interval);// 重新计算10个小时后的时间戳tenHoursLater = Date.now() + 7 * 3600000;// 重新开始倒计时interval = setInterval(updateCountdown, 1000);return;}// 将剩余时间转换为小时、分钟、秒的格式const hours = Math.floor(remainingTime / 3600000);const minutes = Math.floor((remainingTime % 3600000) / 60000);const seconds = Math.floor((remainingTime % 60000) / 1000);// 在控制台输出当前剩余时间// console.log(`${hours}小时 ${minutes}分钟 ${seconds}秒`);this.message = `0${hours}小时 ${minutes}分钟 ${seconds}秒`;};// 开始倒计时interval = setInterval(updateCountdown, 1000);}private getHour() {// 获取当前时间的时间戳(以毫秒为单位)const timestamp = Date.now();// 根据时间戳创建一个Date对象const currentDate = new Date(timestamp);// 获取年份(例如:2024)const year = currentDate.getFullYear();// 获取月份(取值范围是0 - 11,0代表一月,11代表十二月)const month = currentDate.getMonth() + 1; // 需加1以得到实际的月份值// 获取日期(取值范围是1 - 31)const day = currentDate.getDate();// 获取小时(24小时制,取值范围是0 - 23)const hours = currentDate.getHours();// 获取分钟(取值范围是0 - 59)const minutes = currentDate.getMinutes();return `${year} 年 ${month} 月 ${day} 日 ${hours} : ${minutes}`;}
}

最近文章>>>>>>>>>>>

HarmonyOS NEXT实战:元服务与应用 APP 发布应用市场的详细步骤与流程

若本文对您稍有帮助,诚望您不吝点赞,多谢。

有兴趣的同学可以点击查看源码

  • gitee:https://gitee.com/jiaojiaoone/explore-harmony-next/tree/case%2Fwanandroid/
  • github:https://github.com/JasonYinH/ExploreHarmonyNext.git

http://www.ppmy.cn/news/1558972.html

相关文章

swagger,showdoc,apifox,Mock 服务,dubbo,ZooKeeper和dubbo的关系

Swagger、ShowDoc 和 Apifox 之间的区别与优势 Swagger、ShowDoc 和 Apifox 都是用于 API 文档管理和测试的工具&#xff0c;但它们各有特色和适用场景。以下是详细的比较&#xff0c;并附上每个工具的具体用法示例。 1. Swagger 特点与优势&#xff1a; 广泛采用: Swagger…

【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验

文章目录 引言产品简介产品功能产品优势 API调用与场景实践图像增强API调用实例发票API调用实例其他场景 结语相关链接 引言 在数字化信息处理的时代&#xff0c;如何高效、精准地提取和结构化各类文档数据成为了企业和政府部门的重要需求。尤其是在面对海量票据、证件、表单和…

基于Linux内核防火墙-数据包转发和转换详解

大家觉得有意义和参考价值记得关注和点赞&#xff01;&#xff01;&#xff01; 本文技术含量稍微有点偏高&#xff0c;读起来理解来有点难&#xff0c;在具体读懂之前将前面的一些概念了解清楚&#xff0c;不然后续很变扭。 一、概念介绍 Linux系统的防火墙&#xff1a;IP信息…

Java圣诞树

目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…

STM32高级物联网通信之以太网通讯

目录 以太网通讯基础知识 什么是以太网 互联网和以太网的区别 1)概念与范围 (1)互联网 (2)以太网 2)技术特点 (1)互联网 (2)以太网 3)应用场景 (1)互联网 (2)以太网 以太网的层次 1)物理层 2)数据链路层 OSI 7层模型 TCPIP 4层模型 一些常见…

机器学习2-NumPy

ndarray自动广播扩展维度&#xff0c;便于进行行列式&#xff0c;数组计算 # 自动广播机制&#xff0c;1维数组和2维数组相加# 二维数组维度 2x5 # array([[ 1, 2, 3, 4, 5], # [ 6, 7, 8, 9, 10]]) d np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) # c是一…

GB/T34944-2017 《Java语言源代码漏洞测试规范》解读——安全功能

GB/T34944-2017 《Java语言源代码漏洞测试规范》标准是软件测试实验室开展代码测试活动的重要依据&#xff0c;也是软件测试实验室申请代码测试CNAS/CMA实验室认证时所依据的标准方法。本系列文章一起解读GB/T34944-2017 《Java语言源代码漏洞测试规范》&#xff0c;前面的文章…

Windows 11 系统下,通过 WSL(Windows Subsystem for Linux)里的 Ubuntu 24.04 安装 CUDNN 记录

#记录工作 以下是基于cuDNN官网提供的命令&#xff0c;在 Windows 11 系统下通过 WSL 里的 Ubuntu 24.04 直接用命令安装 CUDNN 的详细步骤&#xff1a; 一、安装前提 确保已经在 Windows 11 中正确配置好 WSL&#xff0c;并且在 WSL 里成功安装了 Ubuntu 24.04 系统&#xff…