如何通过显示动画实现书籍翻页动效(OpenHarmony) 精华
野生菌君
发布于 2023-6-5 10:03
浏览
3收藏
如何通过显示动画实现书籍翻页动效
场景介绍
翻页动效是应用开发中常见的动效场景,常见的如书籍翻页、日历翻页等。本文就为大家举例讲解如何通过ArkUI提供的显示动画接口animateTo实现书籍翻页的效果。
效果呈现
本例最终实现效果如下:
环境要求
本例基于以下环境开发,开发者也可以基于其他适配的版本进行开发:
- IDE:DevEco Studio 3.1 Beta1
- SDK:Ohos_sdk_public 3.2.11.9 (API Version 9 Release)
实现思路
如图,分上下两层、左右两侧建立4个文本组件(下文用A、B、C、D代称),左右两侧分别代表打开书籍的左右两面,上下两层堆叠放置。
当B沿旋转轴旋转180度覆盖在A上时,就体现为翻页效果。一个翻页动作的完成包括以下几步:
- B沿旋转轴旋转180度。
- B旋转时,D会在右侧显示出来,作为书籍的下一页,此时D承载的内容要变为下一页的内容。
- B旋转到左侧后,A承载的内容变为B的内容。
- 由于A和B互为镜像,所以A显示为B的内容后,需要以A的中间为轴旋转180度。
- B重新旋转到右边,其承载的内容变为下一页的内容。
说明:C用来占位,不需要做动作。
连续重复上述动作即可实现连续翻页动效。
开发步骤
-
创建文本组件。
动效中用到了4个文本组件,因此可以先定义一个文本组件,然后对其进行重复调用。同时为文本组件添加rotate属性,用来控制组件的旋转。
由于各组件旋转的角度和旋转中心不同,需要父组件在调用时传入对应的参数,所以需要为对应变量添加@Prop装饰器,用来控制变量传递。具体代码如下: -
创建父组件框架。
由于文本组件分为上下两层,所以在父组件中采用Stack组件进行层叠布局。同时使用Divider组件作为书籍两个页面间的分隔线。具体代码如下:
-
添加翻页动效。
最后通过以下几点来为静态的组件添加动效:
- 根据实现思路章节的分析,在父组件中定义对应的变量,并在调用子组件时分别传入子组件。
- 自定义book_animate函数,在其中使用animateTo方法添加动画效果,同时控制动画的时长,以及动画过程中各元素状态的改变。
- 在aboutToAppear方法中,使用setInterval方法重复调用book_animate函数,以实现连续翻页动效。
具体代码如下:
通过以上步骤就可以实现翻页动效了。
完整代码
示例完整代码如下:
总结
OpenHarmony当前提供了相对比较丰富的能力可以在制作动效时使用,基本可以满足日常动画的开发,比如平移、旋转、放大缩小、弹簧曲线、转场动画、三维动画等等,大家可以根据业务需要组合使用,也欢迎大家将自己的经验分享出来,我们一起学习啦!
分类
赞
7
收藏 3
回复
7
8
3
相关推荐
感觉这个样式很适合做计分牌
是的,记分牌、日历这些都适合
华为的动画效果做的还是不错的
学习组件的最好方法还是动手实践
文中示例算是三维动画吗
希望OpenHarmony可以做大做强
是的,要自己做才有感觉~
不算三维动画,绘制三维动画可以使用OpenGL