【鸿蒙 HarmonyOS NEXT】使用屏幕属性display:获取屏幕宽高

✨本人自己开发的开源项目:土拨鼠充电系统

✨踩坑不易,还希望各位大佬支持一下,在GitHub给我点个 Start ⭐⭐👍👍

GitHub开源项目地址👉:https://github.com/cheinlu/groundhog-charging-system

一、背景

屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。

不同屏幕大小的宽/高是不一样的,本文主要通过@ohos.display来获取屏幕的宽高属性

二、屏幕属性的几种方法

1、getDefaultDisplaySync(): Display👉👉获取当前默认的display对象

2、getAllDisplays(callback: AsyncCallback<Array<Display>>): void👉👉获取当前所有的display对象,使用callback异步回调。

3、getAllDisplays(): Promise<Array<Display>>👉👉获取当前所有的display对象,使用Promise异步回调。

三、获取屏幕宽高

使用getDefaultDisplaySync(): Display方法,来得到不同屏幕大小的宽高属性

3.1、Display属性

名称

类型

可读

可写

说明

id

number

显示设备的id号。

name

string

显示设备的名称。

alive

boolean

显示设备是否启用。

state

DisplayState

显示设备的状态。

refreshRate

number

显示设备的刷新率。

rotation

number

显示设备的屏幕旋转角度。

值为0时,表示显示设备屏幕旋转为0°;

值为1时,表示显示设备屏幕旋转为90°;

值为2时,表示显示设备屏幕旋转为180°;

值为3时,表示显示设备屏幕旋转为270°。

width

number

显示设备的屏幕宽度,单位为像素。

height

number

显示设备的屏幕高度,单位为像素。

densityDPI

number

显示设备的屏幕密度,表示每英寸点数。一般取值160,480等。

densityPixels

number

显示设备的逻辑密度,是像素单位无关的缩放系数。一般取值1,3等。

scaledDensity

number

显示设备的显示字体的缩放因子。通常与densityPixels相同。

xDPI

number

x方向中每英寸屏幕的确切物理像素值。

yDPI

number

y方向中每英寸屏幕的确切物理像素值。

3.2、获取屏幕宽高

 具体代码:

import display from '@ohos.display';@Entry
@Component
struct DisplayPage {@State screenWidth: number = -1;@State screenHeight: number = -1aboutToAppear(): void {let data = display.getDefaultDisplaySync();//屏幕宽this.screenWidth = px2vp(data.width)//屏幕高this.screenHeight = px2vp(data.height)}build() {Column() {Text(`屏幕宽:${this.screenWidth}`).fontSize(20).fontWeight(FontWeight.Bold)Text(`屏幕高:${this.screenHeight}`).fontSize(20).fontWeight(FontWeight.Bold)}.width('100%').margin({ top: 100 })}
}

实际效果: 

3.3、封装成工具类使用

说明:在实际项目中,页面中画UI时都会涉及获取屏幕宽度,便考虑封装成工具类,页面中使用时再引入

3.3.1、创建ScreenUtils文件

在项目中新建utils目录,目录内新建ScreenUtils文件,用于工具类书写

ScreenUtils文件具体代码

import display from '@ohos.display'export class ScreenUtils {//屏幕数据private defaultDisplay: display.Display | null = nullprivate static instance: ScreenUtils;private constructor(){this.defaultDisplay = display.getDefaultDisplaySync()}public static getInstance(): ScreenUtils {if (!ScreenUtils.instance) {ScreenUtils.instance = new ScreenUtils();}return ScreenUtils.instance;}//屏幕宽度--px单位getScreenWidthPx(): number {return this.defaultDisplay?.width ?? -1}//屏幕宽度--px单位转换成vp单位,鸿蒙适配vp单位getScreenWidthVp(): number {return px2vp(this.getScreenWidthPx())}//屏幕高度--px单位getScreenHeightPx(): number {return this.defaultDisplay?.height ?? -1}//屏幕高度--vp单位getScreenHeightVp(): number {return px2vp(this.getScreenHeightPx())}
}

3.3.2、组件中引入ScreenUtils文件使用

import { ScreenUtils } from '../utils/ScreenUtils'@Entry
@Component
struct DisplayPage {private screenWidth = ScreenUtils.getInstance().getScreenWidthVp()private screenHeight = ScreenUtils.getInstance().getScreenHeightVp()build() {Column() {Text(`屏幕宽:${this.screenWidth}`).fontSize(20).fontWeight(FontWeight.Bold)Text(`屏幕高:${this.screenHeight}`).fontSize(20).fontWeight(FontWeight.Bold)}.width('100%').margin({ top: 100 })}
}

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

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

相关文章

Java笔试面试题AI答之单元测试JUnit(3)

文章目录 13. 什么是注释以及它们如何在JUnit中有用&#xff1f;什么是注释&#xff08;Annotation&#xff09;&#xff1f;注释在JUnit中的用途 14. 解释如何测试”受保护”方法&#xff1f;1. 使用子类2. 同一包内直接测试3. 反射&#xff08;在支持的语言中&#xff09;4. …

正点原子阿尔法ARM开发板-IMX6ULL(三)——汇编LED驱动实验-上

文章目录 一、原理分析1.1 对于IMX6ULL的IO初始化1.2 IO的复用&#xff08;MUX&#xff09;1.3 电气属性寄存器&#xff08;PAD&#xff09;1.3.1 SRE(bit0)1.3.2 DSE(bit5:3)1.3.3 SPEED(bit7:6)1.3.4 ODE(bit11)1.3.5 PKE(bit12)1.3.6 PUE(bit13)1.3.7 PUS(bit15:14)1.3.8 HY…

(java+Seleniums3)自动化测试实战

一.web自动化测试基础 密码的加密处理--是在前端JavaScript 二.selenium IDE录制 打开火狐浏览器&#xff1a; 点击 寻找更多附加组件 输入&#xff1a; 选择&#xff1a; 跳转&#xff1a;点击 安装完成&#xff0c;打开之后是这个页面&#xff1a; 录制一个新的测试用例在一个…

PHPJWT的使用

今天得空整理整理JWT的代码 首先&#xff0c;我们得知道什么是JWT&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种开放标准&#xff08;RFC7519&#xff09;&#xff0c;用于在网络应用环境中安全地传输声明信息。它是一种紧凑的、URL安全的令牌格式&#xff0…

U盘变成RAW格式怎么办?如何恢复!

U盘类型显示为RAW&#xff0c;导致无法正常读取或写入数据&#xff0c;怎么办&#xff1f;这种情况一般都表示U盘的文件系统无法被操作系统识别&#xff0c;可能原因包括&#xff1a;不正确的插拔操作、病毒攻击、电源故障等。当我们遇到U盘打不开变成RAW的时候不要慌&#xff…

【C++\Qt项目实战】俄罗斯方块

俄罗斯方块 1 项目简介2 效果展示3 代码实现3.1 框架3.2 UI界面3.3 核心代码3.3.1 TetrisGameWindow.h3.3.2 TetrisGameWindow.cpp3.3.3 Subject.h3.3.4 Subject.cpp3.3.5 TetrisGame.h3.3.6 TetrisGame.cpp 4 运行效果 1 项目简介 本项目灵感来自经典的俄罗斯方块游戏&#x…

视频智能分析平台LntonAIServer安防监控平台花屏检测、马赛克检测功能介绍

视频监控系统在现代社会中扮演着至关重要的角色&#xff0c;无论是用于安全监控、交通管理还是其他用途&#xff0c;视频的质量直接关系到系统的可靠性和有效性。LntonAIServer通过新增的视频质量诊断功能&#xff0c;包括花屏检测和马赛克检测&#xff0c;进一步增强了视频监控…

Windows系统下安装JMeter

目录 一、官网下载JMeter 二、运行 JMeter 一、官网下载JMeter JMeter 官网安装地址 Apache JMeter - Apache JMeter™https://jmeter.apache.org/ 下载Windows版本 下载完成后 解压 二、运行 JMeter 打开bin目录 下面两个文件其中一个均可运行双击jmeter.bat 或者使用…

算法入门-深度优先搜索3

第六部分&#xff1a;深度优先搜索 112.路径总和&#xff08;简单&#xff09; 题目&#xff1a;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果…

[项目][WebServer][项目介绍及知识铺垫][上]详细讲解

目录 1.何为WWW?2.HTTP分层1.整体2.细节3.DNS?4.协议之间是如何协同运作的&#xff1f; 3.Http相关概念1.特点2.URI && URL && URN3.HTTP URL格式 1.何为WWW? WWW是环球信息网的缩写&#xff0c;常简称为Web分为Web客户端和Web服务器程序&#xff0c;WWW可…

简单计算机网络概念

1.浏览器过程 输入url&#xff0c;解析url 1.协议http、https的区别&#xff1b;HTTPS就是在HTTP与TCP之间增加了SSL/TSL安全传输层 2.格式&#xff1a;协议//主机:端口/路径&#xff1b; 3.HTTP版本&#xff1a;1.0和1.1 4.HTTP/1.1&#xff1a;1. 持久连接&#xff1a;为了…

数据结构————单链表

引言 在计算机科学的领域里&#xff0c;数据结构的探索与应用是程序设计的灵魂。单链表&#xff0c;作为一种基础而灵活的数据结构&#xff0c;不仅在理论上有着丰富的内涵&#xff0c;其在实际编程中的应用亦是广泛而深远。本文旨在深入浅出地介绍单链表的实现过程&#xff0c…

探探我对测试开发的看法?

测试开发岗位主要负责确保软件的可用性和稳定性。 ● 可用性不仅包括功能的正常使用&#xff0c;还涵盖了软件在不同环境下的兼容性&#xff0c;如各种网络环境、不同 CPU 核心环境以及多样化的移动端设备等。 ● 稳定性方面我的理解是&#xff0c;测试人员不仅要从用户角度评判…

OpenAI gym: How to get complete list of ATARI environments

题意&#xff1a;OpenAI Gym&#xff1a;如何获取完整的 ATARI 环境列表 问题背景&#xff1a; I have installed OpenAI gym and the ATARI environments. I know that I can find all the ATARI games in the documentation but is there a way to do this in Python, witho…

UE5 半透明阴影 快速解决方案

Step 1&#xff1a; 打开该选项 Step 2&#xff1a; 将半透明材质给到模型后&#xff0c;设置光照的Shadow Resolution Scale&#xff0c;越大&#xff0c;阴影的效果越好 Step 3&#xff1a; 用这种方式去做&#xff0c;阴影会因为半透明的程度&#xff0c;降低阴影的浓度 要…

使用Azure+C#+visual studio开发图像目标检测系统

在这篇文章里面&#xff0c;我们讲解使用AzureC#visual studio在Azure上做图像的目标检测系统。 笔者是头一次接触C#。之前以Python Java和Scala为主。感觉C#.Net是一种挺好用的开发系统。C#和Java非常像。会一个学另一个很快。 首先&#xff0c;目标检测是个什么东西&#x…

【高校主办,EI稳定检索】2024年人机交互与虚拟现实国际会议(HCIVR 2024)

会议简介 2024年人机交互与虚拟现实国际会议&#xff08;HCIVR 2024&#xff09;定于2024年11月15-17日在中国杭州召开&#xff0c;会议由浙江工业大学主办。人机交互&#xff0c;虚拟现实技术的发展趋势主要体现在系统将越来越实际化&#xff0c;也越来越贴近人类的感知和需求…

python-新冠病毒

题目描述 假设我们掌握了特定时间段内特定城市的新冠病毒感染病例的信息。在排名 i 的当天有 i 个案例&#xff0c;即&#xff1a; 第一天有一例感染第二天有两例感染第三天有三例感染以此类推...... 请计算 n 天内的感染总数和每天平均感染数。 输入 整数 n 表示天数&…

将星 x17 安装ubuntu 20.04 双系统

准备工作&#xff0c;包含关闭快速启动&#xff0c;关闭Secret Boot 1.进入控制面板选择小图标&#xff0c;找到电源选项 2.点击更改当前不可用的设置&#xff0c;关闭快速启动 3.开机启动时快速按F2&#xff0c;进入BIOS 4.选择Setup Utiltity&#xff0c;选择Security&#…

LeetCode 热题 100 回顾5

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…