开发中使用——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。
实现主要涉及使用DeepLink或App 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的基础上增加了域名校验,提高了链接的安全性和可靠性。无论应用是否安装,用户都能访问内容。