当前位置: 首页 > wzjs >正文

天津企业网站建设哪家好搜索引擎优化心得体会

天津企业网站建设哪家好,搜索引擎优化心得体会,服装品牌建设网站的目的,网页游戏开服表怎么缷载一、背景 在开发过程中,我们可能会遇到需要控制 WebP 格式动态图播放次数的需求。例如,某些场景下只需要动图播放一次,而不是循环播放。然而,使用原生组件(如 Image 或 ImageAnimator)时,WebP …

一、背景

在开发过程中,我们可能会遇到需要控制 WebP 格式动态图播放次数的需求。例如,某些场景下只需要动图播放一次,而不是循环播放。然而,使用原生组件(如 Image 或 ImageAnimator)时,WebP 动图会被当作普通图片处理,无法直接控制播放次数。本文将介绍两种解决方案:使用官方原生 API ImageAnimator 组件和使用第三方插件 ImageKnife

二、实现方式

2.1 使用官方原生 API - ImageAnimator 组件

2.2 使用第三方插件 - ImageKnife

三、使用 ImageAnimator 组件实现

官方文档指引👉:文档中心

3.1 解决思路

ImageAnimator 组件默认将 WebP 动图作为普通图片处理,无法直接控制播放次数。为了实现播放次数的控制,我们需要将 WebP 动图解析为多帧图片,然后将这些帧作为 ImageAnimator 的输入,从而实现对播放次数的精确控制。

3.2 示例代码

以下是使用 ImageAnimator 组件实现 WebP 动图播放一次的核心代码:

import { image } from '@kit.ImageKit';@Entry
@Component
struct ImageAnimatorExample {@State state: AnimationStatus = AnimationStatus.Initial; // 控制动画状态imageFrames: Array<ImageFrameInfo> = []; // 存储解析后的帧信息isSelected: boolean = false; // 控制点击状态async aboutToAppear() {// 解析 WebP 动图,获取帧信息this.imageFrames = await this.getImageFrameInfoFromMedia($r('app.media.duck'));}build() {Column({ space: 10 }) {// ImageAnimator 组件ImageAnimator().images(this.imageFrames) // 设置帧信息.state(this.state) // 设置动画状态.iterations(1) // 设置播放次数为 1.width(400).height(400).margin({ top: 100 }).onClick(() => {// 点击图片,开始播放动画this.isSelected = true;this.state = AnimationStatus.Running;});// 重置按钮Button('Reset').onClick(() => {// 点击按钮,停止动画并重置状态this.isSelected = false;this.state = AnimationStatus.Stopped;});}.width('100%').height('100%');}// 解析 WebP 动图,获取帧信息private async getImageFrameInfoFromMedia(resource: Resource) {// 获取 WebP 文件的二进制数据let unit8Array = await getContext(this)?.resourceManager?.getMediaContent({bundleName: resource.bundleName,moduleName: resource.moduleName,id: resource.id,});// 创建 ImageSource 对象let imageSource = image.createImageSource(unit8Array.buffer.slice(0, unit8Array.buffer.byteLength));// 获取所有帧的 PixelMaplet createPixelMap: Array<image.PixelMap> = await imageSource.createPixelMapList({desiredPixelFormat: image.PixelMapFormat.RGBA_8888,});// 获取每帧的延迟时间let delayList = await imageSource.getDelayTimeList();await imageSource.release();// 构建帧信息数组let imageFrameInfoArray: Array<ImageFrameInfo> = [];for (let i = 0; i < createPixelMap.length; i++) {imageFrameInfoArray.push({src: createPixelMap[i],duration: delayList[i],});}return imageFrameInfoArray;}
}

3.3 实现效果

  • 点击“Reset”按钮后,动画停止并重置状态展示图片。

  • 点击图片后,动图开始播放,且只播放一次。

图2

四、使用第三方插件 ImageKnife

4.1 解决思路

ImageKnife 是一个功能强大的第三方插件,支持对动图的精细控制,包括播放次数、播放状态等。通过 ImageKnife,我们可以更简单地实现 WebP 动图的播放控制。

4.2 三方库介绍及安装

4.2.1 简介:

这是专门为OpenHarmony打造的一款图像加载缓存库,致力于更高效、更轻便、更简单

entry/src/main/ets/pages/ImageAnimatorPage.ets · OpenHarmony-TPC/ImageKnife - Gitee.com

4.2.2 安装:

ohpm i @ohos/imageknife

4.3 示例代码

以下是使用 ImageKnife 实现 WebP 动图播放的核心代码:

import { AnimatorOption, ImageKnifeAnimatorComponent } from '@ohos/imageknife';@Entry
@Component
struct ImageAnimatorExample {@State animatorOption: AnimatorOption = {state: AnimationStatus.Running, // 动画状态iterations: 3, // 播放次数};build() {Column() {// ImageKnifeAnimatorComponent 组件ImageKnifeAnimatorComponent({imageKnifeOption: {loadSrc: $r('app.media.duck'), // 加载 WebP 动图},animatorOption: this.animatorOption, // 设置动画选项}).width(300).height(300).backgroundColor(Color.Orange).margin({ top: 30 });}.width('100%').height('100%');}
}

4.4 实现效果

  • 动图自动开始播放,控制播放3次。

  • 通过 animatorOption 可以灵活控制播放次数和状态。

图1

🚀🚀🚀  踩坑不易,还希望各位大佬支持一下

📃 鸿蒙土拨鼠充电开源项目:

✍GitHub开源项目地址👉:https://github.com/cheinlu/groundhog-charging-system

📃 鸿蒙土拨鼠大理石开源项目

✍GitHub开源项目地址👉https://github.com/lusson-luo/HarmonyOS-groundhog-marble-system

最后:👏👏😊😊😊👍👍  

http://www.dtcms.com/wzjs/306925.html

相关文章:

  • 网站代发怎么做东莞有限公司seo
  • 网页设计制作分段brseo优化排名价格
  • 河南做网站公司哪家好搜索引擎优化的定义是什么
  • 舟山的房子做民宿上什么网站seo顾问张智伟
  • 黑龙江大庆疫情最新情况长沙seo培训班
  • 各国网站建设排名百度云网页版登录入口
  • 电子商务网站建设课设学生体会关键词搜索量怎么查
  • 网站增加新闻功能怎么自己开发网站
  • b2c购物网站建设哪个平台推广效果好
  • 潮州网站seo百度网页推广费用
  • 企业自助网站建设影视网站怎么优化关键词排名
  • 外资做网站的公司百度竞价广告
  • 山东网站建设流程拓客软件哪个好用
  • 建设小说网站违法吗最新足球消息
  • 网站建设与优化标准百度一下你就知道下载安装
  • wordpress如何添加自定义元素关键词优化公司费用多少
  • 优秀vi设计案例分析pptseo技术306
  • wordpress the7 seoseo优化网站百度技术
  • 自己做网站要买服务器吗苏州关键词搜索排名
  • 委托做的网站版权归属深圳华强北最新消息
  • m开头的可以做网站的软件nba排名最新排名
  • 工作室 网站经营性备案精准信息300099
  • 做网站跟赚钱嘛seo简单优化
  • 网站分享设计网站seo资讯
  • 建设银行信用卡官方网站无货源电商怎么做
  • 网站使用说明书模板广东今日最新疫情通报
  • 物流好的网站模板整站优化 mail
  • 菜鸟网站编程山东最新消息今天
  • 阿里巴巴国际站买家版app营销官网
  • 网站建设规划设计公司东莞新闻头条新闻