当前位置:   article > 正文

鸿蒙应用/元服务开发-窗口(Stage模型)设置悬浮窗

鸿蒙应用/元服务开发-窗口(Stage模型)设置悬浮窗

一、设置悬浮窗说明

悬浮窗可以在已有的任务基础上,创建一个始终在前台显示的窗口。即使创建悬浮窗的任务退至后台,悬浮窗仍然可以在前台显示。通常悬浮窗位于所有应用窗口之上;开发者可以创建悬浮窗,并对悬浮窗进行属性设置等操作。

二、开发步骤

前提条件:创建WindowType.TYPE_FLOAT即悬浮窗类型的窗口,需要申请ohos.permission.SYSTEM_FLOAT_WINDOW权限。

1.创建悬浮窗。

通过window.createWindow接口创建悬浮窗类型的窗口。

2.对悬浮窗进行属性设置等操作。

悬浮窗窗口创建成功后,可以改变其大小、位置等,还可以根据应用需要设置悬浮窗背景色、亮度等属性。

3.加载显示悬浮窗的具体内容。

通过setUIContent和showWindow接口加载显示悬浮窗的具体内容。

4.销毁悬浮窗。

当不再需要悬浮窗时,可根据具体实现逻辑,使用destroyWindow接口销毁悬浮窗。

  1. import UIAbility from '@ohos.app.ability.UIAbility';
  2. import window from '@ohos.window';
  3. export default class EntryAbility extends UIAbility {
  4. onWindowStageCreate(windowStage) {
  5. // 1.创建悬浮窗。
  6. let windowClass = null;
  7. let config = {name: "floatWindow", windowType: window.WindowType.TYPE_FLOAT, ctx: this.context};
  8. window.createWindow(config, (err, data) => {
  9. if (err.code) {
  10. console.error('Failed to create the floatWindow. Cause: ' + JSON.stringify(err));
  11. return;
  12. }
  13. console.info('Succeeded in creating the floatWindow. Data: ' + JSON.stringify(data));
  14. windowClass = data;
  15. // 2.悬浮窗窗口创建成功后,设置悬浮窗的位置、大小及相关属性等。
  16. windowClass.moveWindowTo(300, 300, (err) => {
  17. if (err.code) {
  18. console.error('Failed to move the window. Cause:' + JSON.stringify(err));
  19. return;
  20. }
  21. console.info('Succeeded in moving the window.');
  22. });
  23. windowClass.resize(500, 500, (err) => {
  24. if (err.code) {
  25. console.error('Failed to change the window size. Cause:' + JSON.stringify(err));
  26. return;
  27. }
  28. console.info('Succeeded in changing the window size.');
  29. });
  30. // 3.为悬浮窗加载对应的目标页面。
  31. windowClass.setUIContent("pages/page4", (err) => {
  32. if (err.code) {
  33. console.error('Failed to load the content. Cause:' + JSON.stringify(err));
  34. return;
  35. }
  36. console.info('Succeeded in loading the content.');
  37. // 3.显示悬浮窗。
  38. windowClass.showWindow((err) => {
  39. if (err.code) {
  40. console.error('Failed to show the window. Cause: ' + JSON.stringify(err));
  41. return;
  42. }
  43. console.info('Succeeded in showing the window.');
  44. });
  45. });
  46. // 4.销毁悬浮窗。当不再需要悬浮窗时,可根据具体实现逻辑,使用destroy对其进行销毁。
  47. windowClass.destroyWindow((err) => {
  48. if (err.code) {
  49. console.error('Failed to destroy the window. Cause: ' + JSON.stringify(err));
  50. return;
  51. }
  52. console.info('Succeeded in destroying the window.');
  53. });
  54. });
  55. }
  56. };

本文主要参考HarmonyOS4.0官方开发文档整理

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/opred/article/detail/63317
推荐阅读
相关标签
  

闽ICP备14008679号