首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【HarmonyOS】公司鸿蒙项目收工总结之《屏幕适配》

  • 25-03-05 00:21
  • 4725
  • 13576
blog.csdn.net

屏幕适配是一个复杂而重要的议题,它直接影响到用户体验和应用的一致性。在进行屏幕适配设计时,可以从以下几个方面进行深入分析:

1. 设备兼容性
当不同类型的设备(如不同尺寸和分辨率的屏幕)使用同一款应用时,我们需要决定是为每种设备类型单独设计一套界面,还是使用一套灵活的响应式和自适应设计方案来适配所有设备类型。这种决策将直接影响到开发成本和用户体验的一致性。

2. 视觉体验
随着手机屏幕尺寸的增大,用户期望的视觉效果也会有所不同。我们需要确定,当屏幕变大时,内容是随着屏幕大小而放大,还是保持原有尺寸,从而在更大的屏幕上展示更多的内容。这种选择将影响到应用的易读性和信息密度。此外,用户往往会根据个人偏好调整手机的字体大小。在这种情况下,我们需要考虑,当用户更改了手机上的字体大小设置时,应用程序内的文本是否也应该相应调整,以提供更好的阅读体验,还是保持不变,以确保界面设计的一致性。

一、设备兼容性

1、如何查看设备类型的展示效果?

新建工程时,可以在 Device type 中勾选当前应用支持的设备类型,这会影响后续预览器的显示。

开发工具 DevEco Studio 右侧边的 Previewer -> 右上角更多 -> Multi-profile preview 可以查看多屏效果。

• Phone: 手机(预览器包含 Foldable(large) 表示可折叠的大屏设备)
• Tablet: 平板电脑
• 2in1: 华为平板2合1
• Car: 车载设备

2、如何代码获取设备类型?

注意:以下代码只有在真机上才生效,预览器中不生效。

  1. import { promptAction, window } from '@kit.ArkUI'
  2. import { resourceManager } from '@kit.LocalizationKit'
  3. @Entry
  4. @Component
  5. struct Page41 {
  6. build() {
  7. Column({ space: 5 }) {
  8. Button('设置当前app以横屏方式显示').onClick(() => {
  9. window.getLastWindow(getContext()).then((windowClass) => {
  10. windowClass.setPreferredOrientation(window.Orientation.PORTRAIT)
  11. })
  12. })
  13. Button('设置当前app以竖屏方式显示').onClick(() => {
  14. window.getLastWindow(getContext()).then((windowClass) => {
  15. windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE)
  16. })
  17. })
  18. Button('判断APP是横屏还是竖屏').onClick(() => {
  19. promptAction.showToast({
  20. message: getContext().resourceManager.getConfigurationSync().direction ===
  21. resourceManager.Direction.DIRECTION_VERTICAL ?
  22. "竖屏" : "横屏"
  23. })
  24. })
  25. Button('获取当前设备类型').onClick(() => {
  26. promptAction.showToast({
  27. message: this.getDeviceTypeInfo()
  28. })
  29. })
  30. }
  31. .height('100%')
  32. .width('100%')
  33. }
  34. getDeviceTypeInfo(): string {
  35. let
  36. deviceType = getContext().resourceManager.getDeviceCapabilitySync().deviceType;
  37. switch (deviceType) {
  38. case resourceManager.DeviceType.DEVICE_TYPE_PHONE:
  39. return "手机";
  40. case resourceManager.DeviceType.DEVICE_TYPE_TABLET:
  41. return "平板";
  42. case resourceManager.DeviceType.DEVICE_TYPE_PC:
  43. return "电脑";
  44. case resourceManager.DeviceType.DEVICE_TYPE_TV:
  45. return "电视";
  46. case resourceManager.DeviceType.DEVICE_TYPE_CAR:
  47. return "汽车";
  48. case resourceManager.DeviceType.DEVICE_TYPE_WEARABLE:
  49. return "穿戴";
  50. case resourceManager.DeviceType.DEVICE_TYPE_2IN1:
  51. return "2IN1";
  52. default:
  53. return "未知"
  54. }
  55. }
  56. }

3、如何适配设备类型?

3.1、响应式布局

当窗口尺寸变化较大时,仅仅依靠自适应布局可能出现图片异常放大或页面内容稀疏、留白过多等问题,此时就需要借助响应式布局能力调整页面结构。

参考官方文档:文档中心

3.2、自适应布局

可通过拉伸、均分、占比、缩放、延申、隐藏、折行等方法单独或组合使用。

参考官方文档:文档中心

二、视觉体验

参考官方文档【像素单位】:文档中心

1、何时使用fp ?

类似于Android的 sp,会随着系统字体大小设置变化。

2、何时使用 lpx?【我实际开发中基本都是用的lpx】

类似于微信小程序的 rpx,区别是小程序designWidth默认是750且不可修改,而鸿蒙的designWidth默认是720但可以修改。通常用于底部四个按钮、页面整体布局等需要等比缩放的情况。在鸿蒙应用中,可以使用 lpx 单位来进行屏幕适配。通过设置 designWidth,开发者可以使用 lpx2px 和 px2lpx 等方法来进行单位转换,从而实现屏幕适配。

3、何时使用vp ?

类似于Android的 dp,通常用于隐私协议内容、商品详情等大量文字显示的场景。

4、何时使用px ?

一般在使用 canvas 绘制时需要绝对尺寸的情况下使用。实际上,不管是 lpx 还是 vp,最终都会以各种计算方式转换为 px。

注:本文转载自blog.csdn.net的zhongcx01的文章"https://blog.csdn.net/zhongcongxu01/article/details/142659519"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top