HarmonyOS 鸿蒙Next屏幕尺寸和像素密度转换工具类,包含了像素密度(ppi)计算、每厘米对应的viewport单位数计算
HarmonyOS 鸿蒙Next屏幕尺寸和像素密度转换工具类,包含了像素密度(ppi)计算、每厘米对应的viewport单位数计算。
import { display } from '@kit.ArkUI';
import deviceInfo from '@ohos.deviceInfo';
@Entry
@Component
struct Page41 {
build() {
Column() {
Button('测试').onClick(() => {
const displayInfo = display.getDefaultDisplaySync();
// console.log(`displayInfo:${JSON.stringify(displayInfo)}`);
const dpiToCm = 2.54; // 1英寸 = 2.54厘米
// 将像素转换为厘米
const widthInches = displayInfo.width / displayInfo.densityDPI;
const heightInches = displayInfo.height / displayInfo.densityDPI;
const widthCm = widthInches * dpiToCm;
const heightCm = heightInches * dpiToCm;
// 使用勾股定理计算对角线英寸
const diagonalInches = Math.sqrt(
Math.pow(widthInches, 2) + Math.pow(heightInches, 2)
);
console.log(`当前设备:${deviceInfo.marketName}`);
console.log(`屏幕宽度(像素): ${displayInfo.width}px`);
console.log(`屏幕高度(像素): ${displayInfo.height}px`);
console.log(`屏幕密度(dpi): ${displayInfo.densityDPI}dpi`);
console.log(`屏幕宽度(厘米): ${widthCm.toFixed(2)}cm`);
console.log(`屏幕高度(厘米): ${heightCm.toFixed(2)}cm`);
console.log(`屏幕对角线尺寸(英寸): ${diagonalInches.toFixed(2)}英寸`);
})
}
.height('100%')
.width('100%')
}
}
6 回复
手机尺寸怎么获取呢
看你要什么单位了,如果尺寸指的是px单位,可以 import { display } from ‘@kit.ArkUI’ display.getDefaultDisplaySync().width display.getDefaultDisplaySync().height
你代码中的 const screenDiagonalInch = 6.69;是写死的么,华为肯定还有其他尺寸的手机呢
import { display } from '@kit.ArkUI';
import deviceInfo from '@ohos.deviceInfo';
@Entry
@Component
struct Page41 {
build() {
Column() {
Button('测试').onClick(() => {
const displayInfo = display.getDefaultDisplaySync();
// console.log(`displayInfo:${JSON.stringify(displayInfo)}`);
const dpiToCm = 2.54; // 1英寸 = 2.54厘米
// 将像素转换为厘米
const widthInches = displayInfo.width / displayInfo.densityDPI;
const heightInches = displayInfo.height / displayInfo.densityDPI;
const widthCm = widthInches * dpiToCm;
const heightCm = heightInches * dpiToCm;
// 使用勾股定理计算对角线英寸
const diagonalInches = Math.sqrt(
Math.pow(widthInches, 2) + Math.pow(heightInches, 2)
);
console.log(`当前设备:${deviceInfo.marketName}`);
console.log(`屏幕宽度(像素): ${displayInfo.width}px`);
console.log(`屏幕高度(像素): ${displayInfo.height}px`);
console.log(`屏幕密度(dpi): ${displayInfo.densityDPI}dpi`);
console.log(`屏幕宽度(厘米): ${widthCm.toFixed(2)}cm`);
console.log(`屏幕高度(厘米): ${heightCm.toFixed(2)}cm`);
console.log(`屏幕对角线尺寸(英寸): ${diagonalInches.toFixed(2)}英寸`);
})
}
.height('100%')
.width('100%')
}
}
在HarmonyOS中,针对屏幕尺寸和像素密度(PPI)的转换,你可以通过Display
类获取屏幕的物理尺寸和分辨率,进而计算PPI。对于viewport单位,通常与CSS像素相关,可通过Configuration
类获取屏幕密度(densityDpi),进而估算每厘米对应的viewport单位。
封装此类工具时,注意处理不同屏幕密度的适配问题。示例代码需自行实现逻辑,如使用Display.getSize()
获取尺寸,Display.getMetrics()
获取密度等。
如果问题依旧没法解决请加我微信,我的微信是itying888。