HarmonyOS鸿蒙Next中全屏游戏时如何实现两次上划进入多任务中心
HarmonyOS鸿蒙Next中全屏游戏时如何实现两次上划进入多任务中心 有没有API可以控制导航手势,第一次上划只是显示导航条,短时间内第二次上划才会退出?
还有一个疑惑,导航条的作用是什么?为什么从底部上划,导航条还没出现就退出游戏了。
有没有api可以拦截系统导航手势的,我看文档里是组件上手势拦截
更多关于HarmonyOS鸿蒙Next中全屏游戏时如何实现两次上划进入多任务中心的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
是已经使用应用扩展布局隐藏避让区的方案实现沉浸式效果(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-develop-apply-immersive-effects#section202484117114),还是有误触退出屏幕么
onWindowStageCreate(windowStage: window.WindowStage): void {
TuanjieLog.info(’%{public}s’, ‘TuanjiePlayerAbility onWindowStageCreate’);
this.windowStage = this.windowStage;
windowStage.loadContent(this.pageUri, (err, data) => {
if (err.code) {
TuanjieLog.error(‘Failed to load the content. Cause: %{public}s’, JSON.stringify(err) ?? ‘’);
return;
}
let windowClass = windowStage.getMainWindowSync();
try {
SetToGlobalThis(WindowUtils.MainWindowKey, windowClass);
WindowUtils.setWindowSizeChangeCallback();
WindowUtils.setWindowAvoidAreaChangeCallBack();
windowClass.setWindowLayoutFullScreen(true).then(() => {
console.info(‘Succeeded in setting the window layout to full-screen mode.’);
}).catch((err: BusinessError) => {
console.error(Failed to set the window layout to full-screen mode. Code is ${err.code}, message is ${err.message}
);
});
} catch (err) {
console.error('Failed to obtain the main window. Cause: ’ + JSON.stringify(err));
}
windowClass.setSpecificSystemBarEnabled(‘navigationIndicator’, false).then(() => {
console.info(‘Succeeded in setting the navigation indicator to be invisible.’);
}).catch((err: BusinessError) => {
console.error(Failed to set the navigation indicator to be invisible. Code is ${err.code}, message is ${err.message}
);
});
TuanjieLog.info(‘Succeeded in loading the content. Data: %{public}s’, JSON.stringify(data) ?? ‘’);
});
windowStage.on('windowStageEvent', (data) => {
let stageEventType: window.WindowStageEventType = data;
switch (stageEventType) {
case window.WindowStageEventType.ACTIVE:
TuanjieLog.info('windowStage active.');
Tuanjie.nativeOnWindowStageActive();
break;
case window.WindowStageEventType.INACTIVE:
TuanjieLog.info('windowStage inactive.');
Tuanjie.nativeOnWindowStageInActive();
break;
case window.WindowStageEventType.RESUMED:
TuanjieLog.info('windowStage resumed.');
this.onResume();
break;
case window.WindowStageEventType.PAUSED:
TuanjieLog.info('windowStage paused.');
this.onPause();
break;
default:
break;
}
})
}
在HarmonyOS鸿蒙Next中,全屏游戏时实现两次上划进入多任务中心,可以通过监听手势事件并处理来实现。具体步骤如下:
-
手势监听:在全屏游戏界面,系统会默认屏蔽部分手势操作,但可以通过自定义手势监听来捕获用户的上划动作。
-
手势识别:在自定义手势监听中,识别用户的上划动作。可以通过
GestureDetector
或OnTouchListener
来捕获触摸事件,并判断是否为上划动作。 -
计数处理:在识别到上划动作后,进行计数。当检测到连续两次上划动作时,触发进入多任务中心的操作。
-
调用系统API:在检测到两次上划后,调用系统提供的API进入多任务中心。可以使用
AbilityContext
或WindowManager
的相关方法来实现。 -
权限与配置:确保应用具有相应的权限,并在
config.json
中配置相关的能力,以支持手势操作和系统API调用。
示例代码片段如下:
import { GestureDetector, Gesture } from '@ohos.multimodalinput.gesture';
import { AbilityContext } from '@ohos.ability.featureAbility';
let swipeCount = 0;
const context = getContext(this) as AbilityContext;
const gestureDetector = new GestureDetector(context);
gestureDetector.onGesture(Gesture.SWIPE_UP, () => {
swipeCount++;
if (swipeCount === 2) {
// 进入多任务中心
context.startAbility({
bundleName: 'com.huawei.multitask',
abilityName: 'MultiTaskAbility'
});
swipeCount = 0;
}
});
通过以上步骤,可以在全屏游戏时实现两次上划进入多任务中心的功能。
在HarmonyOS鸿蒙Next中,全屏游戏时实现两次上划进入多任务中心,可以通过以下步骤进行设置:
- 开启手势导航:确保系统设置中启用了手势导航功能。
- 自定义手势操作:进入“设置” > “系统和更新” > “系统导航方式” > “手势导航”,找到“更多设置”。
- 设置两次上划操作:在“更多设置”中,找到“两次上划”操作,将其设置为“进入多任务中心”。
- 应用设置:保存设置后,在全屏游戏中,通过两次上划手势即可快速进入多任务中心。
通过以上步骤,您可以在全屏游戏时便捷地使用两次上划手势进入多任务中心。