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

HarmonyOS应用一之登录页面案例

目录:

    • 1、代码示例
    • 2、代码分析
    • 3、注解分析

1、代码示例

实现效果:

在这里插入图片描述

/** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/import { UIAbility, Want, AbilityConstant } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { BusinessError, deviceInfo } from '@kit.BasicServicesKit';
import Logger from '../common/utils/Logger';
import CommonConstants from '../common/constants/CommonConstants';
import { GlobalContext } from '../common/utils/GlobalContext';/*** Lift cycle management of Ability.*/
export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {GlobalContext.getContext().setObject('abilityWant', want);GlobalContext.getContext().setObject('launchParam', launchParam);if (deviceInfo.deviceType !== CommonConstants.TABLET_DEVICE_TYPE) {window.getLastWindow(this.context, (err, data) => {if (err.code) {Logger.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));return;}let orientation = window.Orientation.PORTRAIT;data.setPreferredOrientation(orientation, (err) => {if (err.code) {Logger.error('Failed to set window orientation. Cause: ' + JSON.stringify(err));return;}Logger.info('Succeeded in setting window orientation.');});});}}onWindowStageCreate(windowStage: window.WindowStage) {// Main window is created, set main page for this ability.Logger.info(CommonConstants.TAG_ABILITY, 'Ability onWindowStageCreate');windowStage.loadContent('pages/LoginPage', (err: BusinessError<void>, data) => {if (err.code) {Logger.error(CommonConstants.TAG_ABILITY, 'Load the content to failed ' + JSON.stringify(err));return;}Logger.info(CommonConstants.TAG_ABILITY, 'Loading the content to succeeded ' + JSON.stringify(data));});}
}

2、代码分析

2.1代码:
在这里插入图片描述

通过module.json5文件红框处查看入口代码文件。运行就跳入到登录页。

2.2代码:
在这里插入图片描述

程序执行onCreate函数先执行,其次onWindowStageCreate函数后执行。

  • onCreate:在 Ability 创建时被调用,用于执行初始化和设置业务逻辑。
  • onDestroy:在 Ability 销毁时触发,用于执行资源清理和其他清理操作。
  • onWindowStageCreate:在 WindowStage 创建完成后触发。
  • onWindowStageDestroy:在 WindowStage 销毁后触发。
  • onForeground:Ability 的生命周期回调,当应用从后台切换到前台时调用。
  • onBackground:Ability 的生命周期回调,当应用从前台切换到后台时调用。

生命周期

2.3代码:
在这里插入图片描述

 public register(): void {this.smListener = mediaquery.matchMediaSync(CommonConstants.WIDTH_CONDITION_SM);this.smListener.on('change', this.isDeviceSizeSM);this.mdListener = mediaquery.matchMediaSync(CommonConstants.WIDTH_CONDITION_MD);this.mdListener.on('change', this.isDeviceSizeMD);this.lgListener = mediaquery.matchMediaSync(CommonConstants.WIDTH_CONDITION_LG);this.lgListener.on('change', this.isDeviceSizeLG);}

在这里插入图片描述
在这里插入图片描述

在页面初始化时执行注册方法时里面使用监听器来监听屏幕的尺寸变化,并改变AppStorage里面的设备尺寸值。

2.4代码:
在这里插入图片描述

  • GridRow 为栅格容器组件,需与栅格子组件 GridCol 联合使用。
  • 设置一个GridCol占栅格布局的列数

代码介绍

2.5代码:
在这里插入图片描述
在这里插入图片描述
2.6代码:
在这里插入图片描述
直线绘制组件。

2.7代码:
在这里插入图片描述
在这里插入图片描述
oh-package-lock.json5文件中可以去引入包的依赖。

2.8代码:
在这里插入图片描述

页面跳转的router.pushUrl()方法。

3、注解分析

 @StorageProp('currentDeviceSize') currentDeviceSize: string = CommonConstants.SM;
  • @StorageProp:@StorageProp(key) 和AppStorage中key对应的属性建立单向数据同步
  • @StorageLink:@StorageLink(key) 和AppStorage中key对应的属性建立双向数据同步

注解的作用

页面生命周期:

即被@Entry装饰的组件生命周期。提供以下生命周期接口:

  • onPageShow: 页面每次显示时触发一次,包括路由过程、应用进入前台等场景,仅@Entry装饰的自定义组件生效。
  • onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry装饰的自定义组件生效。
  • onBackPress:当用户点击返回按时触发,仅@Entry装饰的自定义组件生效。

在这里插入图片描述

@Preview({title: 'Component',  //预览组件的名称deviceType: 'phone',  //指定当前组件预览渲染的设备类型,默认为Phonewidth: 1080,  //预览设备的宽度,单位:pxheight: 2340,  //预览设备的长度,单位:pxcolorMode: 'light',  //显示的亮暗模式,当前支持取值为lightdpi: 480,  //预览设备的屏幕DPI值locale: 'zh_CN',  //预览设备的语言,如zh_CN、en_US等orientation: 'portrait',  //预览设备的横竖屏状态,取值为portrait或landscaperoundScreen: false  //设备的屏幕形状是否为圆形
})

ArkTS应用/服务支持组件预览,要求compileSdkVersion为8或以上。组件预览支持实时预览,不支持动态图和动态预览。组件预览通过在组件前添加注解@Preview实现,在单个源文件中,最多可以使用10个@Preview装饰自定义组件。

相关文章:

HarmonyOS应用一之登录页面案例

目录&#xff1a; 1、代码示例2、代码分析3、注解分析 1、代码示例 实现效果&#xff1a; /** Copyright (c) 2023 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance w…...

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具&#xff0c;快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…...

手把手教你安装音乐制作软件FL Studio 24.1.1.4285中文破解版

在当今数字化时代&#xff0c;音乐创作不再局限于传统的乐器和录音室&#xff0c;而是借助先进的音乐制作软件&#xff0c;如FL Studio&#xff0c;实现了前所未有的便捷与高效。FL Studio&#xff0c;以其强大的功能、直观的界面和丰富的插件资源&#xff0c;成为了众多音乐制…...

SDL 与 OpenGL 的关系

OpenGL 和 SDL 是两个不同的库&#xff0c;但它们可以配合使用来创建图形应用程序。 SDL&#xff08;Simple DirectMedia Layer&#xff09; SDL 是一个跨平台的多媒体库&#xff0c;用于处理图形、声音、输入和其他游戏开发所需的功能。它简化了窗口创建、事件处理和图形上下…...

考研数学 线性代数----行列式与矩阵

核心框架 前置知识 正式内容 知识点1:单位矩阵 知识点2:可逆矩阵 知识点3: |A|与可逆 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识点: 知识…...

Golang实现简单的HTTP服务,响应RESTful请求判断形状大小

题目要求&#xff1a; 题目 1.shape 接口有面积Area() float64和 周长Perimeter()fioat64 两个法。为Circle Rectangle实现shape 接口。 2.实现isGreater(shape1&#xff0c;shape2 shape)boo1 函数&#xff0c;用于比较两个形状的大小,并使用单元测试验证 3.实现http.Handle…...

使用C语言构建Lua库

Lua 本身是用 C 语言编写的&#xff0c;因此使用 C 编写扩展可以更好地与 Lua 引擎集成&#xff0c;减少性能瓶颈&#xff0c;同时C 语言提供了对底层硬件和操作系统功能的直接访问能力&#xff0c;让 Lua 可以通过 C 扩展来实现对文件系统、网络等高级功能的支持。因为C 语言非…...

愤怒的江小白,这几年怎么了?

近日&#xff0c;东方甄选和江小白的纠纷引发了广泛关注。 8月8日晚间&#xff0c;东方甄选直播间中&#xff0c;主播天权在带货某款白酒产品时突然对比点评江小白产品&#xff0c;称江小白“不是白酒”&#xff1a;“你现在去看江小白的包装&#xff0c;上面是没有‘白酒’这…...

Unity教程(十)Tile Palette搭建平台关卡

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…...

如何防止员工私自拷贝公司内部文件?安企神帮你解决泄密之忧

在企业运营中&#xff0c;保护公司的机密信息至关重要。员工私自拷贝公司内部文件不仅可能导致商业秘密泄露&#xff0c;还可能损害公司的声誉和经济利益。下面我们将介绍一些有效的方法来防止这种情况的发生&#xff0c;并以“安企神”软件为例进行详细说明。 1. 明确规章制度…...

Linux应急响应检查工具

最近一直在优化的 linux 应急检查脚本&#xff0c;也是我一直在应急使用的工具 https://github.com/sun977/linuxcheckshoot 脚本包含两个检查工具&#xff0c;详情可看 README 或者 Banner linuxGun.sh 和 linuxcheck.sh 区别 1、linuxcheck.sh 是完整的 linux 系统检查脚本,…...

CP AUTOSAR标准之EEPROMAbstraction(AUTOSAR_SWS_EEPROMAbstraction)(更新中……)

1 简介和功能概述 EEPROM抽象层的功能、API和配置(见图1)。   图1:内存硬件抽象层模块概览   EEPROM抽象(EA)从设备特定的寻址方案和分段中抽象出来,并为上层提供虚拟寻址方案和分段以及“几乎”无限数量的擦除周期。 3 相关文献 3.1 输入文件 [1]基础软件模块列表AUTO…...

重启redis服务时报错:Failed to start redis.service: Unit not found

重启redis服务时报错&#xff1a;Failed to start redis.service: Unit not found redis配合安全修改了bind和auth配置&#xff0c;重启的时候报错了&#xff0c;试了很多方法&#xff0c;最后才通过日志解决了 1 重新加载systemd 配置并启动&#xff1a; sudo systemctl da…...

Hive3:识别内部表、外部表及相互转换

一、识别方法 查看内部表信息 desc formatted stu;查看外部表信息 desc formatted test_ext1;通过Table Type对应的值&#xff0c;我们可以区分外部表和内部表。 二、相互转换 内部表转外部表 alter table stu set tblproperties(EXTERNALTRUE);外部表转内部表 alter ta…...

Android笔试面试题AI答之Kotlin(7)

文章目录 29.简述Kotlin 中的内联类&#xff0c;什么时候需要内联类&#xff1f;内联类的特点何时需要内联类示例注意 30. 什么是 Coroutine Scope&#xff0c;它与 Coroutine Context 有什么不同&#xff1f;Coroutine Scope&#xff08;协程作用域&#xff09;Coroutine Cont…...

高辐照整车太阳辐照模拟系统试验舱

概览 高辐照整车太阳辐照模拟系统试验是一种模拟太阳辐照对汽车及其零部件影响的测试方法&#xff0c;主要用于评估汽车在长期日照条件下的性能和可靠性。该试验通常遵循特定的标准&#xff0c;如GB/T 2423.24-1995、DIN 75220、BMW PR306等&#xff0c;旨在模拟自然环境中的太…...

如何制作优秀的年终总结PPT?

制作优秀的年终总结PPT&#xff0c;是每位职场人士在年底时的一项重要任务。 一个优秀的年终总结PPT不仅能够清晰地展示你过去一年的工作成果&#xff0c;还能让领导对你的工作能力和态度留下深刻印象。 下面&#xff0c;我将从几个方面详细讲解如何制作这样的PPT&#xff0c…...

架构师第六周作业

目录 1.部署3节点mongodb复制集。 1.1 安装mongodb 1.2 部署复制集 2.部署3节点Kafka集群 1.部署3节点mongodb复制集。 1.1 安装mongodb MongoDB安装包下载 下载地址&#xff1a;https://www.mongodb.com/try/download/community 版本根据需求选择&#xff0c;Mongodb6.…...

解密Java中介者模式:代码实例带你深入理解

1. 引言&#xff1a;中介者模式的重要性 在软件设计的世界里&#xff0c;模块间的相互依赖往往会导致系统的复杂性和维护难度的增加。中介者模式&#xff08;Mediator Pattern&#xff09;作为一种行为设计模式&#xff0c;它的出现就是为了解决这一问题。通过引入一个中介者对…...

19c做好这件事,大幅提升Data Pump工作效率

老司机遇到的新问题 expdp是Oracle 10g引入的数据导出工具&#xff0c;能够提供并行、压缩及元数据导出等更多的功能&#xff0c;在后续的版本中逐渐替代了传统的数据导出工具exp&#xff0c;是数据库开发运维常用的工具之一。在我的印象中&#xff0c;这个工具除了诸如大量的…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...