用HarmonyOS ArkUI实现点赞美女翻牌动效

简介: 用HarmonyOS ArkUI实现点赞美女翻牌动效

本文演示如果用HarmonyOS的ArkUI来实现一个点赞的动画效果。体验HarmonyOS 3最新的API 9,欢迎大家一起参与构建这个万物互联的时代!

活动主页

HarmonyOS线上Codelabs挑战赛已经开启,该系列挑战赛将围绕HarmonyOS的基础组件和容器组件、三方库和数据库等技术特性展开,开发者们可以通过体验基于HarmonyOS特性和能力的应用开发,快速构建有趣、有用的应用程序。

有兴趣的朋友一起参与吧。

活动主页:

https://developer.huawei.com/consumer/cn/forum/topic/0202105184144967482

获取HarmonyOS应用源码

HarmonyOS的ArkUI实现点赞动效的程序“GiveThumbsUp”,全部代码可以在《跟老卫学HarmonyOS开发》项目中找到(链接见文末“参考引用”)。有兴趣的网友可以clone该代码到本地进行运行、测试、修改。

接下来将介绍该应用程序“GiveThumbsUp”是如何实现的。

通过DevEco Studio 3创建应用

有关DevEco Studio 3的安装配置,可以参考前文《玩转HarmonyOS 3必装DevEco Studio 3,注意避弹》这里就不在赘述。

首选是打开DevEco Studio 3,可以看到如下界面。

点击“Create Project”来创建ArkUI程序“GiveThumbsUp”。

选择模板

选择空模板Empty Ability,点击“Next”执行下一步。

配置项目

配置项目信息,重要是以下圈中部分。其他配置按照默认配置即可。点击“Finish”执行下一步。

程序初始化完成之后,就能在该程序基础上进行代码开发、运行。

运行HarmonyOS应用

打开Device Manager

登入华为账号

点击“Sign In”登入个人注册的华为账号。如果没有,则参考本文最后的链接进行注册。

启动远程模拟器

运行应用

点击下命的三角形按钮以启动应用

应用运行效果图如下。

完善代码

在空模板的基础上,我们初步添加业务代码,来最终实现程序。

增加图片模型

在ets目录下,创建一个“model”目录,用于存放数据模型。

创建ImageData.ets代表图片数据模型,主要有三个属性。

export class ImageData {
  id: string
  img: Resource
  name: string
  constructor(id: string, img: Resource, name: string) {
    this.id = id // 图片唯一表示
    this.img = img // 图片资源
    this.name = name // 图片名称
  }
}
复制

增加图片数据源

在Index.ets文件中添加initializeImageData方法用于初始化图片的数据源代码如下:

export function initializeImageData(): Array<ImageData> {
  let imageDataArray: Array<ImageData> = [
    { "id": "0", "img": $r('app.media.pic01'), "name": '女1' },
    { "id": "1", "img": $r('app.media.pic02'), "name": '女2' },
    { "id": "2", "img": $r('app.media.pic03'), "name": '女3' },
  ]
  return imageDataArray
}
复制

可以看到上面定义了一个数组,里面有三张图片的信息。其中“$rd”符号用于应用media目录下的图片资源。

增加图片组件

修改Index.ets代码如下:

import { ImageData } from '../model/ImageData';
@Entry
@Component
struct Index {
  private imageSrc: ImageData[] = initializeImageData()
  @State imageIndex:number = 0;
  @State itemClicked: boolean = false;
  build() {
    Column() {
      Row() {
        Image(this.imageSrc[this.imageIndex].img)
          .rotate({
            x: 0,
            y: 1,
            z: 0,
            angle: this.itemClicked ? 360 : 0
          })
          .scale(
            this.itemClicked
              ? { x: 1.4, y: 1.4 }
              : { x: 1, y: 1 }
          )
          .opacity(this.itemClicked ? 0.6 : 1)
          .animation(
            {
              delay: 10,
              duration: 1000,
              iterations: 1,
              curve: Curve.Smooth,
              playMode: PlayMode.Normal
            }
          );
      }.height('93%').border({ width: 1 })
复制

上述代码用于展示图片已经图片的动效参数。

增加按钮触发动效

修改Index.ets代码如下:

Row() {
        Row(){
          Button('点赞', { type: ButtonType.Normal, stateEffect: true }).borderRadius(8).backgroundColor(0x317aff).width(90)
        }.width('30%').height(50).onClick(()=>{
          this.itemClicked = !this.itemClicked;
        })
        Row(){
          Button('更换', { type: ButtonType.Normal, stateEffect: true }).borderRadius(8).backgroundColor(0x317aff).width(90)
        }.width('30%').height(50).onClick(()=>{
          this.imageIndex ++;
          if (this.imageIndex>=this.imageSrc.length) {
            this.imageIndex = 0;
          }
          this.itemClicked = false;
        })
      }.height('7%').border({ width: 1 })
    }
  }
}
复制

上述代码,“点赞”按钮会触发动效,而“更换”按钮则会修改图片的来源。

程序运行效果

完整演示视频见B站:https://www.bilibili.com/video/BV1tG4y1G73t/

源码

https://github.com/waylau/harmonyos-tutorial 中的“GiveThumbsUp”

参考引用

目录
相关文章
|
2月前
|
开发者 容器
鸿蒙应用开发从入门到实战(十四):ArkUI组件Column&Row&线性布局
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Column和Row组件的使用以及线性布局的方法。
274 12
|
2月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解滑块Slider和进度条Progress组件的使用。
167 1
|
2月前
|
数据安全/隐私保护 开发者
鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
274 3
|
2月前
|
API 数据处理
鸿蒙应用开发从入门到实战(十三):ArkUI组件Slider&Progress
ArkUI提供滑块Slider与进度条Progress组件,用于鸿蒙原生APP开发。Slider支持拖动调节音量、亮度等,可设步长、方向及提示气泡;Progress支持线性、环形等多种样式,可自定义颜色、宽度与刻度,实时显示任务进度。
232 2
|
2月前
|
开发者
鸿蒙应用开发从入门到实战(十二):ArkUI组件Button&Toggle
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解按钮组件Button和Toggle的使用。
291 2
|
2月前
|
存储 编解码 JSON
鸿蒙应用开发从入门到实战(十):ArkUI图片组件Image
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解Image图片组件的使用。
236 1
|
2月前
|
开发框架 前端开发 JavaScript
鸿蒙应用开发从入门到实战(五):ArkUI概述
HarmonyOS提供了一套UI开发框架,即方舟开发框架(ArkUI框架)。方舟开发框架可为开发者提供应用UI开发所必需的能力,比如多种组件、布局计算、动画能力、UI交互、绘制等。
117 0
|
5月前
|
JavaScript 前端开发 IDE
鸿蒙开发:了解布局分析ArkUI Inspector
ArkUI Inspector,知名其意,就是UI检查,它可以让开发者在DevEco Studio中快速的查看一个应用在模拟器或者真机上的UI显示效果,并且可以通过查看多次操作后的界面状态,来快速的分析定位UI界面存在的问题。
117 0
鸿蒙开发:了解布局分析ArkUI Inspector
|
6月前
|
JavaScript 开发者 C++
HarmonyOS NEXT ArkUI生命周期终极指南 | 组件与页面的关系
本文是关于 HarmonyOS NEXT 中 ArkUI 生命周期的终极指南,深入解析组件与页面的关系及其生命周期特性。文章通过超全场景案例、隐藏技巧和避坑秘籍,帮助开发者轻松掌握生命周期管理。内容涵盖页面级(如 `onPageShow`、`onPageHide`)与组件级(如 `aboutToAppear`、`onDidBuild`)生命周期的区别与应用,并提供实战代码示例,包括基础版与高阶版用法。此外,还总结了十大避坑指南和神奇技巧,如实现页面停留统计与双击退出功能。掌握这些知识,助你精准控制 UI 更新,掌控组件与页面的生死轮回!
258 2
|
7月前
|
存储 人工智能 物联网
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡
283 14
【02】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-登录页面LoginView.ets完成-并且详细解释关于arkui关于 CommonConst, commonColor, InputDataModel-优雅草卓伊凡

热门文章

最新文章