自学内容网 自学内容网

【每日学点鸿蒙知识】桌面快捷方式API、Swiper显示异常、Page防止截屏、Tabs组件监听显示隐藏、PDF翻页回调

1、HarmonyOS 桌面快捷方式处理的api说明?

HarmonyOS不考虑开放桌面快捷打开方式能力,建议使用服务卡片定制对应场景

长按应用图标显示的快捷方式可通过module.json5文件的shortcuts标签进行配置,该快捷方式只允许跳转至某个具体的UIAbility,无法直接跳转至非入口页面,且最多可以配置四个快捷方式

对于应用的快捷方式,当前开发者可以通过服务卡片实现类似的能力。点击服务卡片能够跳转至指定UIAbility,且开发者可根据传递的参数,拉起不同的页面。但当前服务卡片不可在应用内创建,只能由用户按照长按应用->预览->添加的步骤,将卡片添加至桌面。

参考文档:

  • https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/module-configuration-file-V5
  • https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/formkit-overview-V5
2、HarmonyOS swiper使用customContentTransition后显示异常(卡片盖在了前一个卡片上,而不是切换)?
@Entry
@Component
struct Index {
  @State cardChangeAnimationDuration: number = 0
  swiperController: SwiperController = new SwiperController()
  @State autoPlay: boolean = true
  userScrolled: boolean = false
  dataList: Color[] = [Color.Red, Color.Yellow, Color.Blue]

  aboutToAppear(): void {
    setInterval(() => {
      if (this.autoPlay) {
        this.swiperController.showNext()
        promptAction.showToast({ message: '切换下一个卡片' })
      }
    }, 2000);
  }

  build() {
    Stack() {
      Swiper(this.swiperController) {
        ForEach(this.dataList, (item: Color, index) => {
          Text(`卡片${index}`)
            .textAlign(TextAlign.Center)
            .font({ size: 17, weight: 500 })
            .backgroundColor(item)
            .opacity(0.5)
        })
      }
      .autoPlay(false) // 组件不自动轮播,自动轮播逻辑交由VM调用scrollToIndex/showNext实现
      .loop(this.autoPlay)
      .indicator(false)
      .duration(this.cardChangeAnimationDuration) // 切换时长可配置
      .curve(Curve.Linear) // 注:<=API12, duration生效需要配置.curve(Curve.Linear)
      .cachedCount(3)
      .width('100%')
      .height('100%')
      .nestedScroll(SwiperNestedScrollMode.SELF_FIRST)
      .onClick(() => {
        this.cardChangeAnimationDuration = !this.autoPlay ? 700 : 400
        this.autoPlay = !this.autoPlay
        if (this.autoPlay) {
          this.userScrolled = false
        }
      })
      .onGestureSwipe((index: number, extraInfo: SwiperAnimationEvent) => {
        this.userScrolled = true
      })
      .onAnimationEnd((index: number, extraInfo: SwiperAnimationEvent) => {
        if (extraInfo.currentOffset == 0 && this.userScrolled) {
          this.autoPlay = false
        }
      })
      .customContentTransition({
        timeout: 1000,
        transition: (proxy: SwiperContentTransitionProxy) => {

        }
      })
    }
  }
}

自定义动画需要自己在实现customContentTransition这个时,自己处理相关得逻辑,请参考示例4:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-container-swiper-V5#swipercontentanimatedtransition12%E5%AF%B9%E8%B1%A1%E8%AF%B4%E6%98%8E

3、HarmonyOS 在hsp中的某个page,如何实现防止截屏呢?

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5

实现步骤:一些页面需要实现防截屏功能。首先需要在module.json5中申请隐私窗口权限。然后在onPageShow()中获取当前窗口对象并设置隐私模式。在退出页面的时候,在onPageHide()生命周期中取消隐私模式即可。

4、HarmonyOS Tabs中组件切换怎么监听组件的显示与隐藏?

想要组件显示时做一些操作处理,发现aboutToAppear方法不会被触发到

使用visibility进行显隐控制

@Entry
@Component
struct VisibilityExample {
  build() {
    Column() {
      Column() {
        // 隐藏不参与占位
        Text('None').fontSize(9).width('90%').fontColor(0xCCCCCC)
        Row().visibility(Visibility.None).width('90%').height(80).backgroundColor(0xAFEEEE)

        // 隐藏参与占位
        Text('Hidden').fontSize(9).width('90%').fontColor(0xCCCCCC)
        Row().visibility(Visibility.Hidden).width('90%').height(80).backgroundColor(0xAFEEEE)

        // 正常显示,组件默认的显示模式
        Text('Visible').fontSize(9).width('90%').fontColor(0xCCCCCC)
        Row().visibility(Visibility.Visible).width('90%').height(80).backgroundColor(0xAFEEEE)
      }.width('90%').border({ width: 1 })
    }.width('100%').margin({ top: 5 })
  }
}
5、HarmonyOS PDF Kit 能否支持PDF文件翻页回调?

PDF Kit目前暂不支持PDF文件翻页回调。PDF Kit主要提供了打开PDF文件、页面添加批注、页眉页脚、水印、背景及书签等功能。


原文地址:https://blog.csdn.net/sjw890821sjw/article/details/144798912

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!