鸿蒙Harmony开发实战(Input Kit)鼠标光标开发详解

鸿蒙开发实战往期文章必看:

HarmonyOS NEXT应用开发性能实践总结

一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!

“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)

 “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路径!


功能介绍

Input Kit(多模输入Kit)为多种输入设备提供服务,如触控板、触摸屏、鼠标、键盘等。通过对这些输入设备上报驱动事件的归一化处理,确保不同输入设备与用户交互体验统一和流畅。除基础的输入事件服务,多模子系统还支持获取设备列表,以及改变鼠标光标样式等。

Input Kit除了提供基础的输入事件服务之外,还提供了获取输入设备列表,改变鼠标光标样式等功能和接口。

运作机制

多模输入能力作为系统为应用提供的一种基础服务,通过处理上报的输入设备驱动事件,完成输入事件管理,接收,预处理,分发,通过inner SDK与JSkit上报应用,具体运行机制如下。

场景介绍

鼠标光标控制提供对鼠标光标显示和隐藏、光标样式查询和设置的能力。使用场景例如:用户在全屏观看视频时,开发者可以控制鼠标光标的显示隐藏;当用户执行取色时,开发者可以将鼠标光标样式切换为取色器样式。

导入模块

import { pointer } from '@kit.InputKit';

接口说明

鼠标光标控制常用接口如下表所示,接口详细介绍请参见ohos.multimodalInput.pointer文档

接口名称描述
isPointerVisible(callback: AsyncCallback<boolean>): void获取鼠标指针显示或隐藏状态。
setPointerVisible(visible: boolean, callback: AsyncCallback<void>): void设置鼠标指针显示或隐藏状态,该接口会影响全局鼠标光标的显示状态。
setPointerStyle(windowId: number, pointerStyle: PointerStyle, callback: AsyncCallback<void>): void设置鼠标光标样式,该接口会影响指定窗口鼠标光标样式。
getPointerStyle(windowId: number, callback: AsyncCallback<PointerStyle>): void查询鼠标光标样式。

设置鼠标光标隐藏

用户在全屏观看视频时,可以调用鼠标光标的隐藏接口设置鼠标光标不可见,提升用户体验。

开发步骤

  1. 应用切换到全屏播放。
  2. 在应用中调用鼠标光标隐藏接口隐藏光标。
  3. 应用退出全屏播放。
  4. 在应用中调用鼠标光标显示接口显示光标。
import { pointer } from '@kit.InputKit';

// 1.应用切换到全屏播放
// 2.调用鼠标光标隐藏接口隐藏光标
try {
  pointer.setPointerVisible(false, (error: Error) => {
    if (error) {
      console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
      return;
    }
    console.log(`Set pointer visible success.`);
  });
} catch (error) {
  console.log(`The mouse pointer hide attributes is failed. ${JSON.stringify(error, [`code`, `message`])}`);
}

// 3.应用退出全屏播放
// 4.调用鼠标光标显示接口显示光标
try {
  pointer.setPointerVisible(true, (error: Error) => {
    if (error) {
      console.log(`Set pointer visible failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
      return;
    }
    console.log(`Set pointer visible success.`);
  });
} catch (error) {
  console.log(`Set pointer visible failed, ${JSON.stringify(error, [`code`, `message`])}`);
}

设置鼠标光标样式

当开发者设计取色器特性时,可以将鼠标光标样式切换为取色器样式,完成取色后,设置鼠标光标样式为默认样式,该接口设置和查询当前应用内指定窗口的光标样式,总共可设置43种光标样式,

开发步骤

  1. 开发者使能取色功能。
  2. 调用窗口实例获取对应的窗口id。
  3. 设置鼠标光标样式为取色器样式。
  4. 取色结束。
  5. 设置鼠标光标样式为默认样式。
import { pointer } from '@kit.InputKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { window } from '@kit.ArkUI';

// 1.开发者使能取色功能
// 2.调用窗口实例获取对应的窗口id
window.getLastWindow(getContext(), (error: BusinessError, windowClass: window.Window) => {
  if (error.code) {
    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
    return;
  }
  let windowId = windowClass.getWindowProperties().id;
  if (windowId < 0) {
    console.log(`Invalid windowId`);
    return;
  }
  try {
    // 3.设置鼠标光标样式为取色器样式
    pointer.setPointerStyle(windowId, pointer.PointerStyle.COLOR_SUCKER).then(() => {
      console.log(`Successfully set mouse pointer style`);
    });
  } catch (error) {
    console.log(`Failed to set the pointer style, error=${JSON.stringify(error)}, msg=${JSON.stringify(`message`)}`);
  }
});
// 4.取色结束
window.getLastWindow(getContext(), (error: BusinessError, windowClass: window.Window) => {
  if (error.code) {
    console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(error));
    return;
  }
  let windowId = windowClass.getWindowProperties().id;
  if (windowId < 0) {
    console.log(`Invalid windowId`);
    return;
  }
  try {
    // 5.设置鼠标光标样式为默认样式
    pointer.setPointerStyle(windowId, pointer.PointerStyle.DEFAULT).then(() => {
      console.log(`Successfully set mouse pointer style`);
    });
  } catch (error) {
    console.log(`Failed to set the pointer style, error=${JSON.stringify(error)}, msg=${JSON.stringify(`message`)}`);
  }
});

最后

小编在之前的鸿蒙系统扫盲中,我明显感觉到一点,那就是许多人参与鸿蒙开发,但是又不知道从哪里下手,有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)路线图、文档、视频、用来跟着学习是非常有必要的。 

该路线图包含基础技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不仅补充了华为官网未涉及的解决方案

路线图适合人群:

IT开发人员:想要拓展职业边界
零基础小白:鸿蒙爱好者,希望从0到1学习,增加一项技能。
技术提升/进阶跳槽:发展瓶颈期,提升职场竞争力,快速掌握鸿蒙技术

如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员

 鸿蒙Next全栈全套开发学习笔记希望这一份鸿蒙学习文档能够给大家带来帮助~

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值