背景:
前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考
先上本期效果图 ,里面图片自行替换
效果图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