HarmonyOS 鸿蒙Next 有没有监听状态栏事件?

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 有没有监听状态栏事件?
有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

关于HarmonyOS 鸿蒙Next 有没有监听状态栏事件?的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

5 回复
就是想双击状态栏回到顶部

HarmonyOS的超级终端功能让我在家就能轻松控制家里的智能设备。

没找到这样的事件,要实现这样的功能可能需要设置页面为沉浸式,然后自定义一个的状态栏高度的view,加个onClick事件就行了。

你好,有想法的开发者

目前还没有未发现有任何公开的事件能够直接监听状态栏的变化。但想了想可以通过一些替代方案来实现这一功能,这是我的一些想法,供参考:

  1. 将应用设定为沉浸式模式,这样便可以隐藏状态栏所占的位置。

    // EntryAbility
    onWindowStageCreate(windowStage: window.WindowStage): void {
        // Main window is created, set main page for this ability
    
    <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> windowClass: window.Window | <span class="hljs-literal"><span class="hljs-literal">undefined</span></span> = <span class="hljs-literal"><span class="hljs-literal">undefined</span></span>
    windowStage.getMainWindow((err: BusinessError, data) =&gt; {
      windowClass = data;
      <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> names: <span class="hljs-built_in"><span class="hljs-built_in">Array</span></span>&lt;<span class="hljs-string"><span class="hljs-string">'status'</span></span> | <span class="hljs-string"><span class="hljs-string">'navigation'</span></span>&gt; = [];
      <span class="hljs-keyword"><span class="hljs-keyword">try</span></span> {
        <span class="hljs-keyword"><span class="hljs-keyword">let</span></span> promise = windowClass.setWindowSystemBarEnable(names);
        promise.then(() =&gt; {
          console.info(<span class="hljs-string"><span class="hljs-string">'Succeeded in setting the system bar to be invisible.'</span></span>);
        }).catch((err: BusinessError) =&gt; {
          console.error(`Failed to set the system bar to be invisible. Cause code: ${err.code}, message: ${err.message}`);
        });
      } <span class="hljs-keyword"><span class="hljs-keyword">catch</span></span> (exception) {
        console.error(`Failed to set the system bar to be invisible. Cause code: ${exception.code}, message: ${exception.message}`);
      }
    })
    

    }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

  2. 定义一个占位控件来模拟状态栏,通过精确的布局控制和对占位控件高度的计算,将其放置在原本状态栏所在的位置。这样一来,我们就可以针对这个占位控件进行双击事件的监听。

    @Entry
    @Component
    struct Index {
    @State clickText: string = ‘empty’

    build() { Column() { Text(this.clickText) .fontSize(28) .gesture(GestureGroup(GestureMode.Exclusive, TapGesture({ count: 2 }) .onAction(() => { this.clickText = ‘double click 1’ }), TapGesture({ count: 1 }) .onAction(() => { this.clickText = ‘single click 1’ }) ) ) .borderWidth(1) } .width(‘100%’) .height(‘100%’) .justifyContent(FlexAlign.Center) .alignSelf(ItemAlign.Center) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这种方法虽然稍显曲折,但能够实现对状态栏区域的监控。希望这些想法能帮到你

回到顶部