uniapp页面适配平板和手机

一、移动端优先

一般建议直接给出750px的手机设计稿,通过rpx等比缩放。这里需要注意的是uniapp默认适配的最大屏幕宽度为960px,超过这个范围rpx将不生效,而某些平板的尺寸比如ipad pro宽度超过了这个数值,所以需要在pages.json中添加配置:

"globalStyle": {
	"rpxCalcMaxDeviceWidth": 1024, // rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
	"rpxCalcBaseDeviceWidth": 375, // rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
	"rpxCalcIncludeWidth": 750 // rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
},

二、平板优先

如果项目组给的是平板尺寸设计稿,这时候进行适配有许多注意事项。

1. 将设计稿尺寸改为750px,并添加配置(同第一点)

2. 字体适配

rpx等比缩放方案可能将字体变的过大或过小,而浏览器端文字大小最小为12px,app中字体虽然没有最小限制,但是字体过小看的不舒适,不小于14px较为合适。
(1)使用px
固定字体大小,手机端字体大小为平板字体差不多两倍,此办法灵活性较低
(2)使用媒体查询
uniapp默认字体大小24~28rpx,此字体大小合理所以无须改动,但是在平板上会变的过大,所以我们可以使用媒体查询将平板的正文字体设置为16rpx左右,在App.vue中全局设置即可,其他字体例如标题可以单独设置大小,这样可以减轻工作量。

page{
	@media #{$pad}{
		font-size: 18rpx;
	}
}

使用媒体的灵活性较高,但是可能让我们的代码变得繁琐,而scss可以让我们优雅的编写媒体查询代码,在全局scss文件中添加变量:

$pad: "(min-width: 500px) and (max-width: 1366px)"; //平板
$phone: "(min-width: 0px) and (max-width: 500px)"; //手机

3. 布局

(1). 平板由于宽度比手机大,设计稿中左右两栏的布局在移动端改为单栏布局
(2). 某些尺寸在手机端不应该缩小而应该放大,放大的比例大致为手机字体/平板字体
(3). 有些样式方面例如使用某组件,可能需要用到js控制,uniapp判断是平板还是手机的代码:

// 判断是否是平板
uni.getSystemInfo({
	success: (res)=>{
		console.log("屏幕尺寸:", res.windowWidth, res.windowHeight)
		if(res.windowWidth > 500){
			Vue.prototype.pad = true
		}else{
			Vue.prototype.pad = false
		}
	}
});

由于添加到Vue原型上,则可以在每个页面上直接使用pad属性判断
例如,使用uview网格布局,在平板上显示3列,在手机端显示两列:

<u-grid :col="pad ? 3 : 2" :border="false">
	<u-grid-item>
		网格内容
	</u-grid-item>
</u-grid>
### 解决 UniApp 应用程序在华为平板上的安装问题 #### 1. 确认 ABI 支持情况 为了确保应用程序可以在不同架构的设备上正常运行,特别是针对华为平板这类可能采用特定 CPU 架构的设备,建议确认应用支持多种 ABI (Application Binary Interface),包括 `armeabi-v7a` `arm64-v8a`。对于某些特殊情况下使用的 x86 平板也应考虑加入相应的 so 文件[^4]。 ```bash # 打包命令中指定ABI选项 uni build --target app-plus --output dist/build/app --compress --minify --release --compileType compile --appPlatform android --buildMode release --cpuAbi "universal" ``` #### 2. 检查 AndroidManifest.xml 中权限配置 有时由于缺少必要的权限声明或不正确的硬件特性设置可能导致安装失败。需仔细核对 `AndroidManifest.xml` 文件中的 `<uses-permission>` 及其他相关标签是否正确无误[^1]。 ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 添加必要权限 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> </manifest> ``` #### 3. 更新 Gradle 版本与依赖项 保持项目所使用的工具链版本最新有助于减少潜在的技术债务技术障碍。定期更新项目的 gradle wrapper、gradle plugin 以及其他第三方库至稳定版能够有效规避一些已知 bug 或者性能瓶颈。 ```groovy // project-level build.gradle dependencies { classpath 'com.android.tools.build:gradle:7.0.2' } ``` #### 4. 测试环境搭建与真机调试优化 当遇到 hbuilder 真机运行检测不到荣耀手机/平板的情况时,除了常规开启 USB 调试外还需注意驱动安装状况,并尝试重启 ADB server 来解决问题。另外,也可以借助 logcat 日志来获取更多关于安装过程的信息以便进一步排查原因所在[^2]。 ```shell adb kill-server && adb start-server adb devices ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值