HarmonyOS NEXT 实战之元服务:静态案例效果---我的热门应用服务

背景:

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

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

在这里插入图片描述

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

  • Index
import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { EventMyItem } from './EventMyItem';export class ListItem1 {img: ResourceStr;title: string;content: string;version: string;constructor(img: ResourceStr, title: string, content: string, version: string) {this.img = img;this.title = title;this.content = content;this.version = version;}
}@Entry
@Component
struct Index {@State message: string = 'Hello World';@State listItem1: ListItem1[] = [new ListItem1($r('app.media.img'), '我爱我家', '北京我爱我家房地产经纪有限...', '版本6.30.0介绍|隐私」权限'),new ListItem1($r('app.media.img_1'), '头条搜索极速版', '北京抖音信息服务有限公司', '版本10.1.3.0|介绍|隐私|权限'),new ListItem1($r('app.media.img_2'), '番茄免费小说', '北京臻鼎科技有限公司', '版本6.5.1.32|介绍|隐私」权限'),new ListItem1($r('app.media.img_3'), '百度极速版', '百度在线网络技术(北京)有...', '版本6.39.0..介绍」隐私」权限'),new ListItem1($r('app.media.img_4'), '上古王冠', '厦门极致互动网络技术股份有...', '版本2.010...介绍」隐私」权限'),new ListItem1($r('app.media.img_5'), '途虎养车', '上海阑途信息技术有限公司', '版本7.3.0I介绍隐私」权限'),new ListItem1($r('app.media.img_6'), '平安证券(享开户礼包)', '平安证券股份有限公司', '版本10.0.1.1|介绍」隐私」权限'),new ListItem1($r('app.media.img_7'), '国泰君安君弘', '国泰君安证券股份有限公司', '版本9.11.30|介绍|隐私|权限'),]build() {Column() {Text($r('app.string.EntryAbility_label')).fontSize(20).margin({ bottom: 10 })List({ space: 6 }) {ForEach(this.listItem1, (item: ListItem1) => {ListItem() {EventMyItem({ data: item })}})}}.alignItems(HorizontalAlign.Start).height('100%').padding(8).width('100%').margin({ top: 40 })}aboutToAppear() {hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');this.loginWithHuaweiID();}/*** 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}});}
}
  • Item
import { ListItem1 } from "./Index"@ComponentV2
export struct EventMyItem {@Param data: ListItem1 = new ListItem1('', '', '', '')build() {Column() {Row({ space: 6 }) {Image(this.data.img).width(50).height(50).borderRadius(10)Column({ space: 6 }) {Text(this.data.title).fontColor('#222222').fontSize(16)Text(this.data.content).fontColor('#222222').fontSize(16)Text(this.data.version).fontColor('#222222').fontSize(16)}.alignItems(HorizontalAlign.Start)}.width("100%").justifyContent(FlexAlign.Start).alignItems(VerticalAlign.Top)Row() {this.textNum(generateFiveDigitRandomNumber() + '', '下载量', Color.Red)this.textNum(generateFiveDigitRandomNumber() + '', '上热搜数', '#FFE6960C')}.width("100%").height(48).justifyContent(FlexAlign.SpaceAround)Row() {Image($r('app.media.startIcon')).width(28).padding(6).onClick(() => {})Text(`2024-12-01~${generateRandomDate()}`).fontSize(11).fontColor('#505050').layoutWeight(1)}.width("100%")}.width("100%").margin({ top: 4, bottom: 4 }).padding({right: 12,left: 12,top: 8,bottom: 6}).border({ width: 1, radius: 8, color: '#F0F0F0' }).linearGradient({angle: 45,colors: [["#9975E5", 0.1], [Color.White, 0.9]]})}/** isIncrease:参考AdapterMyEvent 90行 when (statisticsEntity.isIncrease) */@BuildertextNum(num: string, text: string, numFontColor: ResourceColor, isIncrease: number = -1) {Column() {if (isIncrease != -1) {Text() {Span(num)// ImageSpan}.fontSize(14).fontColor(isIncrease == 1 ? numFontColor : (isIncrease == 2 ? '#0BB746' : '#FFE6960C')).fontWeight(FontWeight.Bold)} else {Text(num).fontSize(14).fontColor(numFontColor).fontWeight(FontWeight.Bold)}Text(text).fontSize(10).fontColor('#505050')}}
}function generateRandomDate(): string {const minYear = 2024; // 最小年份const maxYear = 2024; // 最大年份const minMonth = 12; // 最小月份const maxMonth = 12; // 最大月份const minDay = 1; // 最小日期const maxDay = 31; // 最大日期// 生成随机年份const year = Math.floor(Math.random() * (maxYear - minYear + 1)) + minYear;// 生成随机月份const month = Math.floor(Math.random() * (maxMonth - minMonth + 1)) + minMonth;// 根据月份生成合理的日期let day = 0;if ([1, 3, 5, 7, 8, 10, 12].includes(month)) {day = Math.floor(Math.random() * (31 - minDay + 1)) + minDay;} else if ([4, 6, 9, 11].includes(month)) {day = Math.floor(Math.random() * (30 - minDay + 1)) + minDay;} else if (month === 2) {// 处理闰年if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {day = Math.floor(Math.random() * (29 - minDay + 1)) + minDay;} else {day = Math.floor(Math.random() * (28 - minDay + 1)) + minDay;}}// 返回格式化的日期字符串return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`;
}function generateFiveDigitRandomNumber(): number {const min = 100; // 五位数的最小值const max = 999; // 五位数的最大值return Math.floor(Math.random() * (max - min + 1)) + min;
}

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/497705.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

数字图像处理

一 形态学处理 ①二值图像 PS:1(255)代表的是白 0代表的是黑(0就是什么都看不见,就是黑) ②灰度图像 ③彩色图像 ④数学形态学基础:是分析几何形状和结构的数学方法,它建立在…

linux-软硬链接

我们今天再来聊一下这个"软硬链接"的问题. 目录 1. 软硬链接长什么样?2. 软连接和硬链接的特征 和 应用2.1 软连接特征 及其 应用?①软连接是什么?②软连接的应用1: 快捷方式③软连接的应用2: 方便维护库文件 2.2 硬连接特征 及其 应用?①硬链接是什么?②引用计…

SpringCloud 系列教程:微服务的未来(三)IService接口的业务实现

本文将介绍 IService 接口的基本业务操作、复杂业务操作、Lambda 方法的使用以及批量增加操作,帮助开发者深入了解如何高效地利用 MyBatis-Plus 提供的功能进行数据库操作。无论是简单的单表查询,还是复杂的多表联动,甚至是大数据量的批量操作…

Linux第100步_Linux之设置LCD作为终端控制台和LCD背光调节

KMS是Kemmel Mode Setting的缩写,内核显示模式设置。它主要负责显示的控制,包括屏幕分辨率、屏幕刷新率和颜色深度等等。 CRTC是指显示控制器,在DRM里有多个显存,通过操作CRTC来控制要显示那个显存。 KMS包含了FB框架。DRM驱动默…

解决pycharm无法识别miniconda

解决pycharm无法识别miniconda 选中 conda.bat 点击 Load Enviroments

云手机群控能用来做什么?

随着云手机的发展,云手机群控技术逐渐从小众的游戏多开工具,发展为涵盖多个领域的智能操作平台。不论是手游搬砖、短视频运营,还是账号养成等场景,云手机群控都展现出了强大的应用潜力。本文将为大家详细解析云手机群控的应用场景…

道路倒角 三角网 两侧偏移

public void 多段线和直线两侧缓冲区(){List<Curve> ents1 Z.db.SelectEntities<Curve>();List<Polyline> ents Z.db.CurvesToPolyLines2(ents1);//Z.db.SelectEntities<Polyline>();double offsetDistance 5.0;//p距离double offsetDistance2 1.0…

patch补丁制作,合入,卸载的方法

创建PATCH目录&#xff0c;进入该目录下&#xff0c;创建文件夹old, new, 创建文件1.c&#xff1b; 1.c内容如下&#xff1a; 在new下修改1.c&#xff1a; 开始制作1.patch diff -Naur ./old/1.c ./new/1.c > 1.patch 进入 vi 1.patch&#xff1a; 1.patch内容如下&#…

【基础篇】一、MySQL数据库基础知识

文章目录 Ⅰ. 什么是数据库1、普通文件的缺点2、数据库的概念3、主流数据库4、MySQL Ⅱ. MySQL中客户端、服务端、数据库的关系Ⅲ. 见一见数据库1、数据库文件存放的位置2、创建数据库3、使用数据库4、创建数据库表结构5、表中插入数据6、查询表中数据7、数据的存储逻辑 &#…

电脑vcruntime140.dll丢失的解决方法!vcruntime140.dll丢失是

一、文件丢失问题&#xff1a;vcruntime140.dll丢失的解决方法 vcruntime140.dll是Visual C Redistributable for Visual Studio的一个关键组件&#xff0c;许多应用程序和游戏都需要它才能正常运行。当系统提示vcruntime140.dll丢失时&#xff0c;通常意味着你的系统中缺少了…

【SpringBoot教程】IDEA快速搭建正确的SpringBoot版本和Java版本的项目

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f349;今天毛毛张分享的是在做SpringBoot项目中遇到的三个问题&#xff0c;这三个问题看似都是小问题&#x1f353;&#xff0c;但是却是做项目的基础常识⚠️…

MultiDiff 论文解读

一、CameraCtrl AnimateDiff->MotionCtrl->CameraCtrl CameraCtrl将多帧图像的Plucker射线输入到Camera Encoder&#xff0c;Plucker射线可以表示每个像素对应的光线方向。 Camera Encoder包括ResNet block和Temporal Attention&#xff0c;来提取每一帧相机位姿的时序…

C语言性能优化:从基础到高级的全面指南

引言 C 语言以其高效、灵活和功能强大而著称&#xff0c;被广泛应用于系统编程、嵌入式开发、游戏开发等领域。然而&#xff0c;要写出高性能的 C 语言代码&#xff0c;需要对 C 语言的特性和底层硬件有深入的了解。本文将详细介绍 C 语言性能优化的背后技术&#xff0c;并通过…

用点包图洞察医学数据:以血压分析为例

在医学数据分析的广袤天地里&#xff0c;可视化手段无疑是我们快速洞察数据、挖掘关键信息的有力 “武器”。今天&#xff0c;就来给各位医学同仁介绍一种别具一格的可视化图表 —— 点包图&#xff08;Diverging Dotplot&#xff09;&#xff0c;顺便分享一段用 Python 实操绘…

python爬虫----爬取视频实战

python爬虫-爬取视频 本次爬取&#xff0c;还是运用的是requests方法 首先进入此网站中&#xff0c;选取你想要爬取的视频&#xff0c;进入视频页面&#xff0c;按F12&#xff0c;将网络中的名称栏向上拉找到第一个并点击&#xff0c;可以在标头中&#xff0c;找到后续我们想要…

C# 中使用 MassTransit

在生产环境中使用 MassTransit 时&#xff0c;通常需要进行详细的配置&#xff0c;包括设置连接字符串、配置队列、配置消费者、处理重试和错误队列等。以下是一个完整的示例&#xff0c;展示了如何在 ASP.NET Core 应用程序中配置 MassTransit&#xff0c;包括请求/响应模式和…

【Hackthebox 中英 Write-Up】Manipulating a CRUD API | 操控 CRUD API:一步步提取 Flag

Objective | 目标 This challenge demonstrates how to interact with a CRUD API to perform Update, Delete, and Search operations to retrieve the flag. 本次挑战旨在演示如何与 CRUD API 交互&#xff0c;通过执行 更新、删除 和 搜索 操作来获取 Flag。 操控 CRUD AP…

【OpenGL ES】GLSL基础语法

1 前言 本文将介绍 GLSL 中数据类型、数组、结构体、宏、运算符、向量运算、矩阵运算、函数、流程控制、精度限定符、变量限定符&#xff08;in、out、inout&#xff09;、函数参数限定符等内容&#xff0c;另外提供了一个 include 工具&#xff0c;方便多文件管理 glsl 代码&a…

【Compose multiplatform教程18】多平台资源的设置和配置

要正确配置项目以使用多平台资源&#xff0c;请执行以下操作&#xff1a; 添加库依赖项。 为每种资源创建必要的目录。 为限定资源创建其他目录&#xff08;例如&#xff0c;深色 UI 主题或本地化字符串的不同图像&#xff09;。 依赖项和目录设置 要访问多平台项目中的资源…