[经验分享] OpenHarmony3.2修改启动器源码实现动态壁纸初步方案 原创

westinyang 显示全部楼层 发表于 2023-10-29 10:40:28

序言

本文提到的内容适用于 OpenHarmony 3.2,通过修改系统启动器源码实现动态壁纸的初步方案。其实在 OpenHarmony 4.0 中,官方接口也提供了新的修改壁纸的接口,包括动态壁纸设置。

源码修改

系统桌面仓库:https://gitee.com/openharmony/applications_launcher/tree/OpenHarmony-3.2-Release/

  • product/phone/src/main/ets/pages 下新增一个 DynamicWallpaper.ets(除了放置Video组件外,我也尝试过Web组件用于加载网页作为壁纸,但是实际测试中Web组件无法正常加载,原因未知)
import webview from '@ohos.web.webview'

@Component
export default struct DynamicWallpaper {
  webviewController: webview.WebviewController = new webview.WebviewController()
  videoController: VideoController = new VideoController()

  onPageShow() {
    this.videoController.start()
  }

  onPageHide() {
    // this.videoController.pause()
  }

  build() {
    Column() {
      /*Web({ src: $rawfile("index.html"), controller: this.webviewController })
        .zoomAccess(false)
        .mediaPlayGestureAccess(false)
        .horizontalScrollBarAccess(false)
        .verticalScrollBarAccess(false)
        .fileAccess(true)
        .domStorageAccess(true)
        .databaseAccess(true)
        .javaScriptAccess(true)
        .width('100%')
        .height('100%')*/

      Video({
        src: $rawfile('video1.mp4'),
        currentProgressRate: PlaybackSpeed.Speed_Forward_1_00_X,
        controller: this.videoController
      })
        .width('100%')
        .height('100%')
        .loop(true)
        .autoPlay(true)
        .controls(false)
    }
    .width('100%')
    .height('100%')
  }
}
  • product/phone/src/main/resources/rawfile 下面新增 video1.mp4
  • 修改:product/phone/src/main/ets/pages/EntryView.ets,在 Stack() 布局中加入 DynamicWallpaper() (Stack层叠布局中,元素可以重叠的布局,后一个子元素覆盖前一个子元素,子元素可以叠加,也可以设置位置)
import DynamicWallpaper from './DynamicWallpaper';

......

build() {
  Stack() {
    DynamicWallpaper()

    ......
  }
  .backgroundImage(StyleConstants.DEFAULT_BACKGROUND_IMAGE)
  .backgroundImageSize(ImageSize.Cover)
  .backgroundImagePosition(Alignment.Center)
  .width('100%')
  .height('100%')
}

持续关注

©著作权归作者所有,转载或内容合作请联系作者

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部