faqs-graphics.md 3.2 KB
Newer Older
Z
zengyawen 已提交
1 2
# 图形图像开发常见问题

Z
zengyawen 已提交
3
## 调用window实例的setSystemBarProperties接口时,设置isStatusBarLightIcon和isNavigationBarLightIcon属性不生效
Z
zengyawen 已提交
4 5 6 7 8 9 10 11 12 13

适用于:OpenHarmony SDK 3.2.5.3版本,API9 Stage模型

状态栏字体高亮属性的本质就只是让字体变成白色。调用window实例的setSystemBarProperties接口时,如果设置了状态栏内容颜色statusBarContentColor,就以开发者设置的颜色为准,isStatusBarLightIcon状态栏字体高亮属性就不生效;同理,如果设置了导航栏内容颜色navigationBarContentColor,isNavigationBarLightIcon导航栏字体高亮属性就不生效。

## 如何设置系统状态栏样式

适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型

导入\@ohos.window模块,开发者可以使用window.setSystemBarProperties()接口设置状态栏样式属性,达到自定义样式的效果。
14

Z
zengyawen 已提交
15
## 如何隐藏状态栏,实现沉浸式效果
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

适用于:OpenHarmony SDK 3.2.6.3版本,API9 Stage模型

1. 可以在onWindowStageCreate方法获取windowClass对象。
     
   ```
   onWindowStageCreate(windowStage) {
     // Main window is created, set main page for this ability
     console.log("[Demo] MainAbility onWindowStageCreate")
     windowStage.getMainWindow((err, data) => {
       if (err.code) {
         console.error('Failed to obtain the main window.')
         return;
       }
       // 获取到窗口对象
       globalThis.windowClass = data; 
     })
   }
   ```

2. 设置窗口全屏,隐藏状态栏。
     
   ```
    globalThis.windowClass.setFullScreen(isFullScreen, (err, data) => {
     if (err.code) {
       console.error('Failed to enable the full-screen mode. Cause:' + JSON.stringify(err));
       return;
     }
       console.info('Succeeded in enabling the full-screen mode. Data: ' + JSON.stringify(data));
     });
   ```

## 如何获取窗口的宽高信息

适用于:OpenHarmony SDK 3.2.3.5版本,API9 Stage模型

通过\@ohos.window模块,可以使用getProperties()接口获取窗口属性,然后通过窗口属性的windowRect获取窗口宽高信息

示例:

  
```
let promise = windowClass.getProperties();
promise.then((data)=> {
  console.info('Succeeded in obtaining the window properties. Data: ' + JSON.stringify(data.windowRect));
}).catch((err)=>{
  console.error('Failed to obtain the window properties. Cause: ' + JSON.stringify(err));
});
```

## 如何设置系统状态栏颜色

适用于:OpenHarmony SDK 3.2.5.5版本,API9 Stage模型

参考如下方式实现,示例:

  
```
window.getTopWindow(globalThis.mainContext).then(win => {
  var systemBarProperties = {
    statusBarColor: '#19B6FF', // 状态栏背景颜色
    navigationBarColor: '#19B6FF', // 导航栏背景颜色
    isStatusBarLightIcon: false, // 状态栏图标是否为高亮状态。
    isNavigationBarLightIcon: true, // 导航栏图标是否为高亮状态。
    statusBarContentColor: '#0D0500', // 状态栏文字颜色
    navigationBarContentColor: '#FFA500' // 导航栏文字颜色
  };
  win.setSystemBarProperties(systemBarProperties).catch(err => {
    INDEX_LOGGER.info(`set System Bar Properties failed:${err}`)
  })
})
.catch(err => {
  INDEX_LOGGER.info(`get top window failed:${err}`)
})
```