【每日学点HarmonyOS Next知识】响应返回事件、屏幕旋转、检查手机录屏、主动打开界面、屏幕亮度问题

5 阅读1分钟

1、HarmonyOS 如何创建一个可以响应返回事件并且点击事件可以穿透的Window?

想创建一个自定义的View,可以展示Toast或者弹窗,位于所有页面的上方,当展示Toast的时候,所有的操作需要穿过Toast所在的页面;目前通过自定义Window,然后在Window内加载页面;但是使用Window创建的页面事件无法穿透;而且无法响应点击事件

可以使用以下方法实现:sub_windowClass.setWindowTouchable(false) 参考链接:developer.huawei.com/consumer/cn…

2、HarmonyOS 使用setPreferredOrientation接口进行转屏,但是屏幕还没转过来(状态栏都还没调整过来),接口就返回成功了?

setPreferredOrientation在旋转前就会调用callback,setPreferredOrientation只是下发了命令,下发完了就回调可参考文档:developer.huawei.com/consumer/cn…

旋转有个动画,动画耗时很长,无法动画做完才返回用户成功。执行成功时,动画是可打断的,上次旋转动画没做完如果下次旋转又来了,上次的旋转就会被打断。

3、HarmonyOS 如何检测手机在录屏或者在分享屏幕?

能否检测到手机自带的录屏功能正在录制屏幕,还有企业会议这种场景,把自己手机屏幕共享给别人,能否检测到

开启屏幕截屏、投屏、录屏状态变化的监听

参考链接:developer.huawei.com/consumer/cn…

4、HarmonyOS 在接口中如何主动打开一个界面/对话框?

目前不支持new 接口的写法,只能是通过实现类或者@State类型变量形式,具体显示和交互逻辑由调用者通过实现类的方式处理。参考demo

export interface Month {
  month: string; // 具体年月
  num: number; // 月份
  days: number[]; // 该月日期
  lunarDays: string[];// 农历日期
  year:number; // 年份
}
class myMonth implements Month{
  month: string='';
  num: number=0;
  days: number[]=[111];
  lunarDays: string[]=['1'];
  year: number=1;

}
@AppRouter({ name: "highlyloadedcomponentrender/MainPage" })
@Component
export struct MainPage {
  @State mymount :Month= {
    month: '',
    num: 0,
    days: [],
    lunarDays: [],
    year: 0
  };
  private month=new myMonth();

5、HarmonyOS 亮度不同步体验不好?

在应用内窗口的亮度设置之后从应用退到手机桌面 亮度会恢复到系统亮度 如果窗口设置的亮度和系统亮度相差太大的话就会有点突变的感觉

获取屏幕亮度:developer.huawei.com/consumer/cn…

退出页面时需要把屏幕设为之前的亮度,即为手机默认亮度,将数值设置为-1即为默认亮度

##鸿蒙核心技术##鸿蒙开发工具##DevEco Studio## ##社交##