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

HarmonyOS性能优化——感知流畅优化

在应用开发中,动画可以为用户界面增添生动、流畅的交互效果,提升用户对应用的好感度。然而,滥用动画也会导致应用性能下降,消耗过多的系统资源,甚至影响用户体验。关于感知流畅度请参阅提升动画感知流畅度。

视觉感知优化

应用的卡顿会导致视觉不流畅,引起用户不适。因此,用户操作后应立即提供视觉反馈,以缓解不适感。

开发者可以在用户交互动作开始时,添加动画元素,如单击效果、转场缩放、加载进度条和共享动画。这些动画可以告知用户当前状态已发生变化,应用程序正在快速运作。动画背后涉及数据计算、布局渲染和内容加载。当新界面渲染完成,动画元素可通过渐变消失或移出屏幕等友好的方式退出视觉区域。

图1 应用响应的两个视角
img

转场场景动效感知流畅

HarmonyOS系统为开发者提供了丰富的转场动效库,使开发者能够轻松实现各种转场动画效果。开发者可以根据具体需求,在应用的不同场景中应用这些转场动效,以提升用户体验和界面的吸引力。需要注意的是,为了最佳的用户体验,开发者应根据界面的功能和特点,合理选择转场动效,并遵循动效的使用准则,以确保转场动效在视觉和交互上的一致性。关于转场场景的方案选型请参阅转场场景设计。

转场动画分为基础转场和高级模板化转场,具体类型如下:

  • 出现/消失转场:对新增、消失的控件实现动画效果,是通用的基础转场效果。
  • 导航转场:页面的路由转场方式,对应一个界面消失,另外一个界面出现的动画效果,如设置应用一级菜单切换到二级界面。关于导航转场案例请参阅导航转场模板实现层级转场。
  • 模态转场:新的界面覆盖在旧的界面之上的动画,旧的界面不消失,新的界面出现,如弹框就是典型的模态转场动画。关于导航转场案例请参阅模态转场模板实现通用转场。
  • 共享元素转场 (一镜到底):共享元素转场是一种界面切换时对相同或者相似的元素做的一种位置和大小匹配的过渡动画效果。
  • 页面转场动画(不推荐):页面的路由转场方式,可以通过在pageTransition函数中自定义页面入场和页面退场的转场动效。为了实现更好的转场效果,推荐使用导航转场和模态转场。
  • 旋转屏动画增强:在原旋转屏动画基础上,可配置渐隐和渐现的转场效果。

合理动画时长使应用感知流畅

页面转场动画对提升用户体验至关重要。动画时延过长会显著影响用户的点击完成时延。动画的完成时间直接影响用户何时能开始与应用交互。动画时延过长的主要原因是动画时长设置过长。

常见的页面转场动画时长参数有:

  • Tabs组件设置TabContent切换动画时长,即animationDuration属性。
  • Swiper组件设置子组件切换动画时长,即duration属性。
  • 页面间转场(pageTransition)设置转场动画时长,即PageTransitionOptions对象中的duration字段。具体案例可以参考动画时延场景案例。

使用连贯动画使应用快速响应

通过连贯动画,让应用使用者在操作过程中感受到快速响应。

快速响应

通过连贯动画,让应用使用者在操作过程中感受到快速响应。

应用识别拖动手势事件时需要设置合理的拖动距离,设置不合理的拖动距离会导致滑动不跟手、响应时延慢等问题。针对此类问题可以通过设置distance大小来解决。具体案例可以参考减小拖动识别距离。

http://www.lryc.cn/news/571771.html

相关文章:

  • 鸿蒙网络编程系列54-仓颉版实现Smtp邮件发送客户端
  • LVS +Keepalived 高可用群集
  • 51c大模型~合集141
  • maven编译报错java: Compilation failed: internal java compiler error
  • 基于C++实现(控制台)机械提取词频
  • Hive的分区表(静态分区、动态分区)、分桶表、四种排序方式和数据加载方式
  • Linux操作系统之进程(六):进程的控制(上)
  • 鼎捷T100开发语言-Genero FGL 终极技术手册
  • Linux软件管理包-yum和基础开发工具-vim
  • 6.18 redis面试题 日志 缓存淘汰过期删除 集群
  • 【Leetcode】每日一题 —— No.2966
  • milvus和attu的搭建
  • 八种常见的神经网络介绍
  • Ubuntu 使用kubeadm部署k8s系统组件反复重启的问题
  • LVS +Keepalived高可用群集
  • 物联网控制技术期末复习 知识点总结 第六章 物联网控制算法(PID算法 PWM算法)
  • vscode连接不上服务器问题修复
  • 如何运用 AI 工具运营海外社媒账号
  • 借助AI学习编程,走向架构师之路
  • class对象【C#】2025复习
  • 排序算法专题
  • 【文本大模型】从0开始 - 本地部署一个ChatGLM对话模型(基于WebUI)
  • MySQL 索引和查询优化
  • linux虚拟机yum命令报错解决方案
  • 学习大模型---需要掌握的数学知识
  • 【Python编程】__all__ = [] 的作用
  • PROFIBUS转EtherCAT网关:市政再生水厂的智能连接枢纽
  • 二分查找算法题
  • 鸿蒙Next仓颉语言开发实战教程:懒加载
  • Neo4j常见语句-delete