HarmonyOS NEXT应用开发之SideBarContainer侧边栏淡入淡出动效实现案例

news2024/10/6 20:27:52

介绍

在2in1或平板上,群聊侧边栏是一种较为常用的功能,虽然HarmonyOS已经具备了基本的动效,但是部分情况下开发者可能有定制侧边栏动效的需求,本例主要介绍了如何基于显式动画实现侧边栏的淡入淡出动效。

效果图预览

使用说明

  1. 点击右侧三角按钮进行侧边栏的显示与隐藏
  2. 当前动效过渡时间较短,如果要更清晰地观察动画效果,可以将动效的持续时间SIDEBAR_ANIMATION_DURATION 更改长一点,如1000
  3. 注意,由于手机屏幕边缘较难响应事件,请用2in1或或平板进行测试

实现思路

  1. 由于SideBarContainer的controlButton无法实现对其动效的自定义,所以需要禁用默认的button,通过自定义的Button来控制SideBar的显隐,并为SideBar添加了透明度的变化动效
SideBarContainer(this.sidebarType) {
  SideBarView()
    .opacity(this.isShowSideBar ? SideBarAnimationViewConstants.SIDEBAR_OPACITY_SHOW : SideBarAnimationViewConstants.SIDEBAR_OPACITY_HIDDEN)

  SideBarContentView({ isShowSideBar: this.isShowSideBar })
}
.showSideBar(this.isShowSideBar)
.showControlButton(SideBarAnimationViewConstants.SIDEBAR_IS_SHOW_BUTTON)
.autoHide(SideBarAnimationViewConstants.SIDEBAR_IS_AUTO_HIDE)
  1. 通过显式动画控制侧边栏的显隐,以便实现自定义动效
animateTo({ duration: SideBarAnimationViewConstants.SIDEBAR_ANIMATION_DURATION }, () => {
    this.isShowSideBar = !this.isShowSideBar;
})

高性能知识点

不涉及

工程结构&模块类型

sidebaranimation                                // har
|---constants                                   // 常量定义
|---view
|   |---SideBarAnimationView.ets                // 入口组件 
|   |---SideBarContentView.ets                  // 内容区组件
|   |---SideBarView.ets                         // 侧边栏组件

模块依赖

  1. 路由模块:供entry模块实现路由导航
  2. utils模块:功能介绍

参考资料

  1. SideBarContainer
  2. 显式动画
  3. 计算特性
    为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

腾讯T10级高工技术,安卓全套VIP课程全网免费送:https://qr21.cn/D2k9D5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣模板题:检测字符串中数字是否递增

bool areNumbersAscending(char * s){//双指针操作&#xff0c;前指针保存前面一个数字字符int p0,q0;for(int i0;s[i];i){if(s[i]>0&&s[i]<9){pp*10s[i]-0;if(s[i1] ||s[i1]\0){//进行比较, 比较过后将p赋值q&#xff0c;q记录前面一个数字,因为数字均为小于100…

Git 仓库瘦身与 LFS 大文件存储

熟悉 Git 的小伙伴应该都知道随着 Git 仓库维护的时间越来越久&#xff0c;追踪的文件越来越多&#xff0c;git 存储的 objects 数量会极其庞大&#xff0c;每次从远程仓库 git clone 的时候都会墨迹很久。如果我们不小心 git add 了一个体积很大的文件&#xff0c;且 git push…

通俗易懂的精度Precision和召回率Recall解释,看这篇就行,5分钟记住。

一、背景 因为我是做机器人方向的&#xff0c;不可避免的涉及到视觉方向的内容&#xff0c;还有审稿的时候也会看到识别相关的内容&#xff0c;其中衡量识别效果的指标包括精度Precision和召回率Recall&#xff0c;虽然很好理解&#xff0c;但每次都记不住&#xff0c;趁这次机…

【递归专题】【蓝桥杯备考训练】:有序分数、正则问题、带分数、约数之和、分形之城【已更新完成】

目录 1、有序分数&#xff08;usaco training 2.1&#xff09; 2、正则问题&#xff08;第八届蓝桥杯省赛C A组 & Java A组&#xff09; 3、带分数&#xff08;第四届蓝桥杯省赛Java A组/B组 & C B组/C组&#xff09; 4、约数之和&#xff08;《算法竞赛进阶指南》…

Flink实时数仓之用户埋点系统(二)

用户埋点平台-数仓建模 1、数据仓库 1.1 数据仓库的构建 1.1.1 数据模型 数据模型就是数据组织和存储方法&#xff0c;它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后&#xff0c;数据才能得到高性能、低成本、高效率、高质量的使用。…

【ArcGISProSDK】获取扩展模块许可到期时间

结果 以下是获取的3D分析模块的许可到期时间 代码 var licenseExpirationDate ArcGIS.Core.Licensing.LicenseInformation.GetExpirationDate(LicenseCodes.Analyst3D); 扩展模块 MemberDescriptionAnalyst3D3D AnalystAviationAirportsAviation and AirportsBusinessAnal…

数目之差

解法一&#xff1a; 显然只需让多的在限度内最多即可 #include<iostream> #include<algorithm> using namespace std; #define endl \n void solve() {int n, k, num0 0, num1 0;cin >> n >> k;string s;cin >> s;for (int i 0; i < s.s…

OpenAI Q-Star:AGI距离自我意识越来越近

最近硅谷曝出一份54页的内部文件&#xff0c;揭露了去年OpenAI宫斗&#xff0c;导致Altman&#xff08;奥特曼&#xff09;差点离职的神秘项目——Q-Star&#xff08;神秘代号Q*&#xff09;。 根据该文件显示&#xff0c;Q-Star多模态大模型拥有125万亿个参数&#xff0c;比现…

linux之source.list解析

众所周知&#xff0c;linux可以通过apt命令安装软件&#xff0c;那么apt又是从哪里获取软件包呢并安装呢&#xff1f;这里就绕不开一个文件source.list&#xff0c;该文件定义了软件源相关的信息。下面以实际例子&#xff0c;详细的介绍下这个文件。 文件作用 定义软件源的信…

就业班 第二阶段 2401--3.18 初识mysql

初识&#xff1a; 1、关系型数据库mysql、mariadb、sqlite 二维关系模型 2、非关系型数据库 redis、memcached sql 四个部分 DDL 数据库定义语言 创建数据库&#xff0c;创建用户&#xff0c;创建表 DML 数据库操作语言 增删改 DQL 数据库查询语言 查 DCL 数据库控制语言 授权 …

phpstudy自定义安装mysql8.3并启动

phpstudy自定义安装mysql8.3并启动 先去官网:https://dev.mysql.com/downloads/下载压缩包文件 然后按下面的图片一步一步操作 选择版本&#xff0c;选择第一个压缩包文件&#xff0c;下载 下载完成后&#xff0c;解压到phpstudy环境目录下&#xff0c;如下图 然后进入mysq…

Ubuntu 搭建gitlab服务器,及使用repo管理

一、GitLab安装与配置 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 1、安装Ubuntu系统&#xff08;这个教程很多&#xff0c;就不展开了&#xff09;。 2、安装gitlab社区版本&#xff0c;有需…

【每日一题】区域和检索 - 数组不可变

文章目录 Tag题目来源解题思路方法一&#xff1a;自定义前缀和数组方法二&#xff1a;使用 accumulate() 实现前项求和 写在最后 Tag 【前缀和】【数组】【2024-03-18】 题目来源 303. 区域和检索 - 数组不可变 解题思路 方法一&#xff1a;自定义前缀和数组 前缀和的基础知…

第四百零二回

文章目录 知识回顾示例代码经验总结 我们在上一章回中介绍了MethodChannel的使用方法&#xff0c;本章回中将介绍EventChannel的使用方法.闲话休提&#xff0c;让我们一起Talk Flutter吧。 知识回顾 我们在前面章回中介绍了通道的概念和作用&#xff0c;并且提到了通道有不同的…

如何突破DRAM对SSD容量提升的限制?

近日小编看到Pure Storage公司的研发高级副总裁肖恩罗斯马林(Shawn Rosemarin)的一个观点“由于DRAM的局限性&#xff0c;固态硬盘(SSD)的容量难以突破30TB”。 这个观点不是完全准确&#xff0c;实际上&#xff0c;Solidigm已经发布了最大容量61.44TB QLC SSD。 但是&#xf…

AI 初创公司趋势:Y Combinator 最新批次的见解

总部位于硅谷的著名创业加速器 Y Combinator (YC) 最近宣布了其 2023 年冬季队列&#xff0c;不出所料&#xff0c;约 31% 的初创公司&#xff08;269 家中有 80 家&#xff09;拥有自我报告的 AI 标签。在这篇文章中&#xff0c;我分析了这批 20-25 家初创公司&#xff0c;以了…

深度剖析:数字经济下人工智能水平的新测算模型数据集

数据来源&#xff1a;企业年报时间跨度&#xff1a;1991-2022年数据范围&#xff1a;各企业数据指标&#xff1a; 年份 股票代码 公司名称 总词频 词频加1取对数 人工智能 计算机视觉 图像识别 知识图谱 智能教育 增强现实 智能政务 特征提…

Leetcode刷题笔记——动态规划(背包问题)篇

Leetcode刷题笔记——动态规划&#xff08;背包问题&#xff09;篇 一、0-1 背包问题 0-1背包问题简介 有 n 件物品和一个最多能背重量为 w 的背包。第 i 件物品的重量是 weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包…

HTML学习:图片格式——超链接

一、图片格式 1.jpg格式 概述:扩展名为.jpg 或.jpeg &#xff0c;是一种有损的压缩格式(把肉眼不容易观察出来的细节丢弃了)。 主要特点:支持的颜色丰富、占用空间较小、不支持透明背景、不支持动态图。 使用场景:对图片细节没有极高要求的场景&#xff0c;例如:网站的产品…

容器数据卷

目录 一、容器数据卷概念 二、使用数据卷 2.1直接使用命令来挂载 三、实战测试 四、具名挂载和匿名挂载 4.1匿名挂载举例&#xff1a; 4.2具名挂载举例&#xff1a; 五、数据卷容器 一、容器数据卷概念 数据&#xff1f;如果数据都在容器中&#xff0c;那么容器删除&am…