uni-app获取分辨率有差异
uni-app获取分辨率有差异
项目 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | windows11 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.45 |
手机系统 | Android |
手机系统版本号 | Android 12 |
手机厂商 | 香橙派 |
手机机型 | zero3 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
let windows_info = uni.getWindowInfo() let ww = windows_info.windowWidth let hh = windows_info.windowHeight // #ifdef APP windows_info = plus.screen.getCurrentSize(); ww = windows_info.resolutionWidth hh = windows_info.resolutionHeight // #endif console.log(“窗口”,windows_info)
```javascript
uni.showModal({
title:'wh',
content:JSON.stringify(windows_info)
})
bug描述:
调试获取到的分辨率是对的,打包安装之后获取的分辨率是错的,一样的代码,没有改动,调试获取的是1280,720,打包安装后的是405,720
更多关于uni-app获取分辨率有差异的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是什么问题呀
特定机器 香橙派zero3, 他实际也是1280 720,调试的时候获取到正确的,全屏显示,打包后安装 就不是全屏,然后发货获取的尺寸是不对的, 其他手机正常 商米的宽屏安卓机子上也正常
应用有没有设置targetSdkVersion?尝试去掉此配置试下。
回复 DCloud_App_Array: 没有配置这个,然后配置了31 32 也是不行,那个香橙派zero3 是安卓12的
在uni-app中获取分辨率出现差异的问题,主要是由于不同API获取的维度不同导致的。从你的代码来看,调试时使用的是uni.getWindowInfo()
,而打包后使用的是plus.screen.getCurrentSize()
,这两个API有以下区别:
uni.getWindowInfo()
获取的是逻辑像素(与CSS像素一致),会受设备DPR(设备像素比)影响plus.screen.getCurrentSize()
获取的是物理像素,不受DPR影响
解决方案建议统一使用uni.getSystemInfoSync()
或uni.getWindowInfo()
来获取分辨率,保持一致性。修改代码如下:
const systemInfo = uni.getSystemInfoSync()
const ww = systemInfo.windowWidth
const hh = systemInfo.windowHeight
// 或者使用uni.getWindowInfo()
const windowInfo = uni.getWindowInfo()
const ww = windowInfo.windowWidth
const hh = windowInfo.windowHeight