HarmonyOS 针对PAD形态做适配

应用配置了设备形态支持PAD,web内核现在返回的是PAD的UA布局。但是应用代码里面没有针对PAD形态做适配。切换成竖屏后导致画面整体内容显示偏小。如何针对PAD形态做适配

HarmonyOS
5天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

方案一:所有设备均支持横竖屏旋转

直接在对应 Ability 的 module.json5 中增加方向配置,将方向配置为

auto_rotation_restricted (传感器开关打开,方向可随传感器旋转)

"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ts",
"description": "$string:ability_desc",
"icon": "$media:icon",
"label": "$string:ability_label",
"startWindowIcon": "$media:startIcon",
"orientation": "auto_rotation_restricted",

方案二:不同设备上采用不同策略,平板上需要支持旋转

此方案需要在代码中根据设备类型和状态动态控制

onWindowStageCreate(windowStage: window.WindowStage): void {
  windowStage.getMainWindow().then((windowObj) => {
  this.windowObj = windowObj
  this.setDefaultOrientation();
});
display.on('change', (displayId: number) => {
  if (displayId == 0) {
    this.setDefaultOrientation();
  }
});
}
setDefaultOrientation(): void {
  const BREAKPOINT_MD = 480;
  let displayInfo: display.Display = display.getDefaultDisplaySync();
  if (displayInfo == null) {
  console.error('displayInfo is empty!');
  return;
}
let displayWidth: number = px2vp(displayInfo.width);
let displayHeight: number = px2vp(displayInfo.height);
if (displayWidth < BREAKPOINT_MD || displayHeight < BREAKPOINT_MD) {
  this.windowObj.setPreferredOrientation(window.Orientation.PORTRAIT);
} else {
  this.windowObj.setPreferredOrientation(window.Orientation.AUTO_ROTATION
  _RESTRICTED);
}
}
分享
微博
QQ
微信
回复
5天前
相关问题
HarmonyOS Navigation如何适配pad
117浏览 • 1回复 待解决
HarmonyOS pad小窗适配如何实现
108浏览 • 1回复 待解决
鸿蒙应用开发如何图片适配
2419浏览 • 1回复 待解决
HarmonyOS 区分手机,pad方法
154浏览 • 1回复 待解决
HarmonyOS pad端设置启动图
283浏览 • 1回复 待解决
针对字节流的解码工具
1166浏览 • 1回复 待解决
HarmonyOS 屏幕适配,字体适配问题
189浏览 • 1回复 待解决
HarmonyOS 希望适配SVGAPlayer SDK适配
94浏览 • 1回复 待解决
请问针对下面场景描述如何实现 ?
357浏览 • 1回复 待解决
HarmonyOS PAD上从剪切板获取数据失败
179浏览 • 1回复 待解决