当前位置: 首页 > news >正文

开发中使用——APP层级相关知识

文章目录

  • 在鸿蒙(HarmonyOS)开发中,,总会遇到一些全局设置,这里就将实际开发中遇到的问题进行总结一下。基于个人的开发中遇到的问题,会随着开发的深入不断完善。
  • 一、APP设置
    • 1. 设置APP状态栏
    • 2. 设置底部安全区域的背景颜色
    • 3. 基于1和2综合一下,设置之后的效果对比如下
    • 4. 设置窗口全屏布局
    • 5. 底部安全区域设置成”透明“
  • 二、从APP内部跳到其他APP
    • 1.使用DeepLink链接(推荐)
    • 2.使用App Linking链接


在鸿蒙(HarmonyOS)开发中,,总会遇到一些全局设置,这里就将实际开发中遇到的问题进行总结一下。基于个人的开发中遇到的问题,会随着开发的深入不断完善。

一、APP设置

1. 设置APP状态栏

需要在入口Ability,默认模块Entry的EntryAbility中的方法
onWindowStageCreate(windowStage: window.WindowStage): void 里面进行设置。
设置代码如下:

    /// 设置状态栏let sysBarProps: window.SystemBarProperties = {statusBarColor: '#ffffff', // 状态栏颜色,白色statusBarContentColor: '#000000' // 状态栏文字颜色,黑色};windowStage.getMainWindowSync().setWindowSystemBarProperties(sysBarProps).then(() => {console.info('Succeeded in setting the status bar properties.');});

2. 设置底部安全区域的背景颜色

设置底部安全区域的背景颜色通常涉及到两个方面:设置窗口的背景色和扩展组件的安全区域。以下是具体的实现步骤:

  • 设置窗口的背景色
    在鸿蒙系统中,你可以通过setWindowBackgroundColor方法来设置窗口的背景颜色。这一步骤对于实现底部安全区域的背景颜色尤为重要,因为它提供了颜色的基底。
// EntryAbility.ets
onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('pages/Example', (err, data) => {if (err.code) {return;}// 设置整个窗口的颜色以匹配应用元素的颜色windowStage.getMainWindowSync().setWindowBackgroundColor('008000');});
}
  • 扩展组件的安全区域
    使用expandSafeArea属性可以让你的组件扩展到安全区域以外,例如状态栏和导航栏。这对于创建沉浸式效果非常有用。
@Entry
@Component
struct Example {build() {Column() {Row() {Text('ROW1').fontSize(40).textAlign(TextAlign.Center).width('100%')}.backgroundColor('F08080')// 设置顶部绘制扩展到状态栏.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])Row() {Text('ROW2').fontSize(40)}.backgroundColor(Color.Orange).padding(20)}}
}

3. 基于1和2综合一下,设置之后的效果对比如下

通过上述1和2步骤,有效地设置鸿蒙应用中底部安全区域的背景颜色,创造出更加丰富和沉浸的用户体验。

4. 设置窗口全屏布局

  • 同过下面的方法一样可以达到上述效果,创造出更加丰富和沉浸的用户体验。
  • 同样在入口Ability,默认模块Entry的EntryAbility中的方法
    onWindowStageCreate(windowStage: window.WindowStage): void 里面进行设置。
    设置代码如下:
    // 设置窗口全屏布局let windowClass: window.Window = windowStage.getMainWindowSync();windowClass.setWindowLayoutFullScreen(true).then(() => {console.info('Succeeded in setting the window layout to full-screen mode.');});

5. 底部安全区域设置成”透明“

设置底部安全区域的背景颜色通常涉及到两个方面:设置窗口的背景色和扩展组件的安全区域。以下是具体的实现步骤。

  • 设置窗口的背景色
    在鸿蒙系统中,你可以通过setWindowBackgroundColor方法来设置窗口的背景颜色。这一步骤对于实现底部安全区域的背景颜色尤为重要,因为它提供了颜色的基底。

// EntryAbility.ets
onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('pages/MyPage', (err) => {if (err.code) {hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));return;}hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');// 设置整个窗口的颜色以匹配应用元素的颜色windowStage.getMainWindowSync().setWindowBackgroundColor('#ffffff');});
}
  • 扩展组件的安全区域 :
    使用expandSafeArea属性可以让你的组件扩展到安全区域以外,例如状态栏和导航栏。这对于创建沉浸式效果非常有用。
@Entry
@Component
struct Example {build() {Column() {Row() {Text('ROW1').fontSize(40).textAlign(TextAlign.Center).width('100%')}.backgroundColor('F08080')// 设置顶部绘制扩展到状态栏.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP])Row() {Text('ROW2').fontSize(40)}.backgroundColor(Color.Orange).padding(20)}}
}

如果您希望底部安全区域的背景为透明,可以通过设置组件的expandSafeArea属性和backgroundColor来实现。

首先,您需要确保您的组件已经设置了扩展安全区域的属性,这可以通过调用
.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])来实现。这个设置会让组件的背景扩展到底部安全区域。

二、从APP内部跳到其他APP

通过APP进行分享、或者从应用内部跳到应用市场进行评价,都需要从APP中跳转到其他APP。

实现主要涉及使用DeepLinkApp Linking链接。以下是具体的实现步骤:

1.使用DeepLink链接(推荐)

在应用中构造DeepLink链接。链接格式为:store://appgallery.huawei.com/app/detail?id= + bundleName,其中bundleName是要跳转到的应用详情页的应用包名。

  • 在应用中调用startAbility方法,使用构造的DeepLink链接启动应用市场应用详情页。例如:
import { hilog } from '@kit.PerformanceAnalysisKit'
import { BusinessError } from '@kit.BasicServicesKit'
import { common, Want } from '@kit.AbilityKit'function startAppGalleryDetailAbility(context: common.UIAbilityContext, bundleName: string): void {let want: Want = {uri: 'store://appgallery.huawei.com/app/detail?id=' + bundleName};context.startAbility(want).then(() => {hilog.info(0x0001, 'TAG', "Succeeded in starting Ability successfully.")}).catch((error: BusinessError) => {hilog.error(0x0001, 'TAG', `Failed to startAbility.Code: ${error.code}, message is ${error.message}`);});
}

在页面中使用方式,代码如下

// TODO: 跳转至AppGallery的APP详情页的"评论/反馈"板块
// 获取UIAbilityContext
let context: common.UIAbilityContext = this.getUIContext().getHostContext() as common.UIAbilityContext;startAppGalleryDetailAbility(context,'com.lernercom.emsneutral');
  • 在HTML文件中也可以通过按钮点击事件触发DeepLink链接,从而跳转到应用市场的应用详情页。

2.使用App Linking链接

  • 在HTML文件中使用a标签的href属性配置为要跳转应用详情的App Linking地址。例如,跳转到华为应用市场中的华为商城:
<a class="function_item" href="https://appgallery.huawei.com/app/detail?id=com.huawei.hmos.vmall">去应用市场下载</a>
  • App Linking在Deep Linking的基础上增加了域名校验,提高了链接的安全性和可靠性。无论应用是否安装,用户都能访问内容。
http://www.dtcms.com/a/339817.html

相关文章:

  • bit-Agent正式接入GPT-5,九科信息智能体能力再升级!
  • 海滨浴场应急广播:守护碧海蓝天的安全防线
  • 皮带跑偏?智慧煤矿靠AI摄像机+检测算法实现实时预警
  • Docker学习--常用命令
  • vue3动态获取高度用在轮播图上
  • Diamond开发经验(1)
  • 代码随想录刷题Day37
  • C++的二叉搜索树(二叉排序树)
  • AC 应用控制技术
  • Vulkan笔记(十一)-渲染通道(RenderPass)详解
  • 厂区能源管理智能化改造物联网解决方案
  • 沈昕医编---因为上岸了医疗编,来说一下e类联考的强度
  • YggJS RLogin暗黑霓虹主题登录注册页面 版本:v0.1.1
  • js 怎么调用 deepseekAPI
  • 雷卯针对香橙派Orange Pi 5 Pro开发板防雷防静电方案
  • 从密度到聚类:DBSCAN算法的第一性原理解析
  • MyCAT2的主从配置
  • Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
  • 第2章 组件设计与架构
  • IEEE GRSM 2025:Vision Foundation Models in Remote Sensing
  • 基于 STM32 和 NB-IoT 的智慧家居多设备联动控制系统设计
  • Windows Server DNS优化,网络响应速度提升方案
  • 让AI学会“边做边想“:ReAct的实战指南
  • 前端 React 实现数据懒加载-滚动触底加载数据
  • Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
  • 移动端网页调试实战,内存泄漏问题的发现与优化
  • Qt原对象系统工作机制
  • 运维面试题
  • LWIP协议栈实现ARP协议
  • 如何看出有没有做raid,并做的是raid几