首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UWP 创建动画的极简方式 — LottieUWP

设计师在 AE (After Effects) 中设计动画,通过 AE 中的 BodyMovin 插件导出为一个 JSON 文件,Lottie SDK 可以直接读取这个 JSON 文件,并通过简单代码控制播放动画...开发过程 或许大家也看到了,Lottie 官方提供的 SDK 中并没有 UWP,而我们要使用的是一个个人开发者根据 Android Lottie SDK 改写的 UWP 版本 SDK。...项目,然后在 Nuget 管理器中查找 LottieUWP 包并安装它。...除此之外,还可以针对 LottieAnimationView 的 AnimatorUpdate event 进行监听和处理,比如在动画更新时,显示当前进度,或更新播放进度条的进度值。...所以不建议在 RecyclerView 中使用带有 masks 或者 mattes 的 JSON 文件,因为会伴有频繁的创建和销毁过程,动画播放的效果会降低。

1.5K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    新 QQ NT 桌面版如何实现内存优化探索?

    [QQ 主窗口业务模块的拆解] 此外,其他静态资源(如 SVG、base64 图像)在加载时也会占用不少内存,所以我们采取了按需加载的策略:只在可见时加载,不可见时主动销毁和回收。...3)性能与体验平衡 Lottie 及动画方案选型 超级表情采用 Lottie 动画技术方案,有高清高帧率高质量特点,但同时也为我们带来了渲染的高成本。...为了保证 Lottie 的高帧率和减少 CPU 占用,我们缓存了 Lottie 渲染器生成的动画帧,内存消耗成为了首要问题。...关注到 Lottie 渲染的内存消耗后,我们主要从以下 2 步入手: 缓存的动画帧尺寸:桌面端 lottie 渲染大小为 120 × 120,考虑到需要保持 Lottie 动画的高质量,缓存的动画帧尺寸调整为实际尺寸大小的两倍...4)Electron 使用姿势 Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。

    42730

    Electron以慢著称,为什么桌面QQ却选择它做架构升级?

    3.2.3 性能与体验平衡 Lottie 及动画方案选型 超级表情采用 Lottie 动画技术方案,有高清高帧率高质量特点,但同时也为我们带来了渲染的高成本。...为了保证 Lottie 的高帧率和减少 CPU 占用,我们缓存了 Lottie 渲染器生成的动画帧,内存消耗成为了首要问题。...[QQ Lottie 动画示例] 对其进行定量分析,超级表情 Lottie 资源继承自手机 QQ,尺寸是 512 × 512,动画帧以 int8 数组存储,所以一帧动画为 512 × 512 × 4 =...关注到 Lottie 渲染的内存消耗后,我们主要从以下 2 步入手: ▶︎ 缓存的动画帧尺寸:桌面端 lottie 渲染大小为 120 × 120,考虑到需要保持 Lottie 动画的高质量,缓存的动画帧尺寸调整为实际尺寸大小的两倍...3.2.4 Electron 使用姿势 Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。

    2.7K43

    QQ 桌面版:内存优化探索与总结

    主窗口业务模块的拆解 此外,其他静态资源(如 SVG、base64 图像)在加载时也会占用不少内存,所以我们采取了按需加载的策略:只在可见时加载,不可见时主动销毁和回收。...3) 性能与体验平衡 Lottie 及动画方案选型 超级表情采用 Lottie 动画技术方案,有高清高帧率高质量特点,但同时也为我们带来了渲染的高成本。...为了保证 Lottie 的高帧率和减少 CPU 占用,我们缓存了 Lottie 渲染器生成的动画帧,内存消耗成为了首要问题。...关注到 Lottie 渲染的内存消耗后,我们主要从以下 2 步入手: 缓存的动画帧尺寸:桌面端 lottie 渲染大小为 120 × 120,考虑到需要保持 Lottie 动画的高质量,缓存的动画帧尺寸调整为实际尺寸大小的两倍...4) Electron 使用姿势 Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。

    58630

    腾讯QQ桌面版架构升级:内存优化探索与总结

    主窗口业务模块的拆解 此外,其他静态资源(如 SVG、base64 图像)在加载时也会占用不少内存,所以我们采取了按需加载的策略:只在可见时加载,不可见时主动销毁和回收。...3) 性能与体验平衡 Lottie 及动画方案选型 超级表情采用 Lottie 动画技术方案,有高清高帧率高质量特点,但同时也为我们带来了渲染的高成本。...为了保证 Lottie 的高帧率和减少 CPU 占用,我们缓存了 Lottie 渲染器生成的动画帧,内存消耗成为了首要问题。...关注到 Lottie 渲染的内存消耗后,我们主要从以下 2 步入手: 缓存的动画帧尺寸:桌面端 lottie 渲染大小为 120 × 120,考虑到需要保持 Lottie 动画的高质量,缓存的动画帧尺寸调整为实际尺寸大小的两倍...4) Electron 使用姿势 Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。

    1K31

    Lottie动画原理

    导语:Lottie动画是Airbnb开源的一个支持 Android、iOS 以及 ReactNative。通过AE导出的JSON文件+Lottie库可快速实现动画绘制。...上图为Lottie的结构图 LOTAnimationView: 承接控制动画的功能,如播放暂停 LOTComposition: 主要解析JSON文件内容 LOTCompositionContainer:...p的k值是一个数组,并且是带有t的元素, 即为帧动画。...每个RunLoop周期中会自动开始一次新的事务,即使你不显式的使用[CATranscation begin]开始一次事务,任何在一次RunLoop运行时循环中属性的改变都会被集中起来,执行默认0.25秒的动画...下面是display调用的方法,它会根据当前帧是否在该子图层的显示帧范围内,如果不在,则隐藏,否则赋予图层新的动画属性。

    5.8K71

    【RecyclerView】二、RecyclerView 简介 ( RecyclerView 特点 | RecyclerView 涉及到的类 )

    --- RecyclerView 是 Google 官方提供的任何 基于适配器显示的视图 , 可以实现普通列表 ( ListView ) , 网格列表 ( GridView ) , 瀑布流 , 以及各种自定义形式的多容器布局...; RecyclerView 样式与适配器等解耦 : RecyclerView 提供了插拔式体验 , 实现的 Adapter 适配器与显示样式设置 高度解耦 , 在不改变 Adapter 适配器的前提下..., 可以实现不同的添加 删除动画 ; 以 " 设置不同的 LayoutManager , 就可以实现不同的布局展示样式 " 为例 , 如 : 设置 LinearLayoutManager 布局管理器..., 网格布局管理器 GridLayoutManager , 瀑布流布局管理器 StaggeredGridLayoutManager , 也可以 自定义实现各种奇形怪状的布局管理器 , 如自定义圆形的布局管理器..., ItemAnimator ; ItemDecoration 用于设置每个布局元素的 间隔样式 ; ItemAnimator 用于设置布局元素的 动画效果 , 如添加动画 , 删除动画 等 ; 四、

    5.3K00

    华为鸿蒙 HarmonyOS 开发资料全面汇总

    LayoutManagerGroup - 一组自定义视图,负责测量和放置 RecyclerView 中的项目视图,并确定何时回收用户不再可见的项目视图的策略。...StatefulLayout - 显示最常见的状态模板,如加载,清空,错误等。要做的就是用 StatefulLayout 包装目标区域(视图) 。...Badge 是带有插入数字的彩色圆圈,该圆圈显示在图标的右上角,通常在 IM 应用程序中显示新消息或新功能的作用。...material-dialogs - 它具有几乎所有带有多个测试用例的 UI 组件,其中包括带有文本,图像,按钮,ListContainer 项目,调色板,自定义视图和进度栏的对话框。...壁画负责图像的加载和显示,因此您不必这样做。它将从网络,本地存储或本地资源加载图像,并显示一个占位符,直到图像到达为止。它具有两个级别的缓存;一个在内存中,另一个在内部存储器中。

    3.3K40

    面向前端的 Lottie & AE 动画手把手入门教学

    预览: 动画和编辑实时预览/编辑窗口 工具: 各种工具的集合, 如文字工具、图形工具等 属性: 在这里编辑元素的属性 首先, 选择我们新建的合成, 点击工具栏的圆角矩形按钮, 同时按住shift, 在预览区域绘制一个矩形...这时, 因为我们的动画都是匀速运动, 看起来会很生硬, 因为真实世界中物理运动是有加速度的。...因此我们需要给我们的动画设置曲线, 让其符合真实世界的物理规律。 点击图层面板的右上角, 显示曲线面板, 如图: ?...因此我们只需要拖动控制器便可以控制曲线。 ? 同时, 点击工具栏中的钢笔工具, 便可以在曲线任意位置额外添加锚点进行更进一步的曲线控制。 按住 ALT 同时点击点击锚点可以将之前转换为曲线。.../index.html, 打开浏览器, 将会看到我们的动画, 是不是非常酷~ 除了能够播放和暂停, Lottie 还为我们提供了更加精细的动画控制方法和事件钩子, 有兴趣的小伙伴参考: GitHub

    3K50

    一个 Vue 页面的内存泄露分析

    为了避免装给浏览器装的一些插件造成影响,使用Chome的隐身模式页面,它会把所有的插件都给禁掉。 然后打开devtools,切到Memory的tab,选中Heap snapshot,如下所示: ?...它是一个用来放lottie动画的DOM容器,lottie对象里面仍有引用它: ?...这个是一个用lottie做的loading动画,当loading结束的时候,我会手动调一下它的stop api停止动画,并且把.animte-container给remove掉,但是为什么lottie还不肯放过它呢...我的代码是这么写的: let loadingAnimate = null; let bodymovinAnimate = { // 显示loading动画 showLoading ()...,方法是做一些操作如弹个框然后关了,拍一张堆快照,搜索detached,按distance排序,把非空的节点展开父级,找到标黄的字样说明,那些就是存在没有释放的引用。

    4K30

    RecyclerView 必知必会

    本文的代码以图片形式显示,点击图片显示高清图。 前言 下文中Demo的源代码地址:RecyclerViewDemo(Github)。...为了防止在执行add动画时外面有新的add动画添加到mPendingAdditions中,从而导致执行add动画错乱,这里将mPendingAdditions的内容移动到局部变量additions中,然后遍历...那么如何在不破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在不破话原有类代码的情况下,对原有类的功能进行扩展。...通过getRootView().addView(emptyView)将空数据时显示的View添加到当前View的层次结构中。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。

    4.2K90

    RecyclerView必知必会

    本文的代码以图片形式显示,点击图片显示高清图。 前言 下文中Demo的源代码地址:RecyclerViewDemo(Github)。...中获取合适的View,在后文的回收机制中会介绍该方法的具体实现。...那么如何在不破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在不破话原有类代码的情况下,对原有类的功能进行扩展。...通过getRootView().addView(emptyView)将空数据时显示的View添加到当前View的层次结构中。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。

    4.7K20

    IM跨平台技术学习(九):全面解密新QQ桌面版的Electron内存优化实践

    9、定向优化3:性能与体验的平衡9.1Lottie 及动画方案选型超级表情采用 Lottie 动画技术方案,有高清高帧率高质量特点,但同时也为我们带来了渲染的高成本。...为了保证 Lottie 的高帧率和减少 CPU 占用,我们缓存了 Lottie 渲染器生成的动画帧,内存消耗成为了首要问题。...关注到 Lottie 渲染的内存消耗后,我们主要从以下 2 步入手:1)缓存的动画帧尺寸:桌面端 lottie 渲染大小为 120 × 120,考虑到需要保持 Lottie 动画的高质量,缓存的动画帧尺寸调整为实际尺寸大小的两倍...10、定向优化4:Electron的正确使用姿势Electron 给主进程提供了不少对系统能力调用的 API,如托盘、系统通知、macOS 中 dock 栏设置等。...(下篇)》《腾讯团队分享:手机QQ中的人脸识别酷炫动画效果实现详解》《腾讯团队分享 :一次手Q聊天界面中图片显示bug的追踪过程分享》《QQ 18年:解密8亿月活的QQ后台服务接口隔离技术》《以手机QQ

    2.3K41

    RecyclerView 必知必会

    比如有一个需求是屏幕竖着的时候的显示形式是ListView,屏幕横着的时候的显示形式是2列的GridView,此时如果用RecyclerView,则通过设置LayoutManager一行代码实现替换。...为了防止在执行add动画时外面有新的add动画添加到mPendingAdditions中,从而导致执行add动画错乱,这里将mPendingAdditions的内容移动到局部变量additions中,然后遍历...那么如何在不破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在不破话原有类代码的情况下,对原有类的功能进行扩展。...通过getRootView().addView(emptyView)将空数据时显示的View添加到当前View的层次结构中。...回顾 回顾整篇文章,发现我们已经实现了RecyclerView的很多扩展功能,包括:打造万能适配器、添加Item事件、添加头视图和尾视图、设置空布局、侧滑拖拽。

    2.6K70

    使用强大的 AirBnb Lottie 让你的 React APP 炫酷起来

    我将从lottifiles中选择以下React图标旋转的React动画。从那里,我们可以预览它,并改变一些东西,如背景颜色。...你可以把它放在项目根目录下的静态文件夹中,也可以把它放在src文件夹下的动画文件夹中。 这取决于你,因为我们将从任何文件路径导入JSON数据。...一旦安装了lottie-web,我们就可以将动画放置在任何JSX元素中,方法是给出一个指示,表明我们希望它驻留在某个选择器中。 最好的方法是使用id属性,因为它应该只在应用程序的元素中使用一次。...: 如果你有和我一样的代码,并让你的动画在一个空div中运行,它会看起来很大。...动画的默认呈现方式是SVG,带有renderer属性。这有最多的特性,但HTML选项可以有更好的性能,并支持3D层。 默认情况下动画会无限循环或重复,因为loop被设置为true。

    2K20

    Android Notes|BottomNavigationView 爱上 Lottie

    以前大部分项目底部导航栏关于图片部分的实现,要么两套图 selector 切换,要么通过着色器 tint 进行渲染,总之最后呈现的效果便是在点击时两张图静态切换,说 Low 吧,也还凑合,但是总是没那么高大上...项目重构时,韩总说了,之前的方式呈现的效果太 Low 了,这次重构要求底部要动。(内心默默来句,你咋不上天。) 先来看个两者间对比效果吧~ 效果对比 原有两张静态图切换: ? 小动画浪起来: ?...设置字体颜色,尤其默认以及选中,同样可以通过 selector 选择器进行对应设置。 而关于选中状态切换时,对应标题字体大小发生改变以及导航栏高度,都可以通过在 dimens 定义如下解决: 的思路: 我想着因为是通过 playAnimation 开始执行动画从而过渡到最后的颜色,那么对应的 endAnimation 应该是直接能回到初始状态。...身为猿猿,面对实际开发中遇到的问题,一定要采取多方案,首要保证内容、结果的输出,其次才是合理的循循渐进的优化。 2、BottomNavigationView Item 长按提示怎么搞掉?

    3.7K21

    Flutter vs React Native vs Native:深度性能比较

    我们还使用Android上的RecyclerView.SmoothScroller来自动化滚动速度。在iOS和React Native上,我们使用了带有计时器的方法,并以编程方式滚动到位置。...在每种情况下,我们在列表视图中都有1000个项目,并且滚动时间相同以到达最后一个列表元素。在每种情况下,我们都使用每个平台具有不同库的图像缓存。更多细节可以在源代码中揭示。...我们使用了在Android,iOS,React Native上使用Lottie进行动画处理的矢量动画,并在Flutter上使用了与Flare相同的动画。...iOS iOS和React Native在此测试中的结果几乎与Lottie for React Native使用本地方法相同。 Flare和Flutter不会令人惊讶。...在此测试中,我们比较了动画200张图像时的性能。刻度旋转和淡入淡出动画同时执行。 Android Native 显示出最佳性能和最有效的内存消耗。

    3.5K20

    AirBnb 开源动画引擎 Lottie:采用 Core Animation 提高性能

    Lottie 中的动画是通过 JSON 文件描述的,可以使用 Bodymovin 插件从 After Effects 中导出。...Lottie 将对 JSON 进行解码,并访问渲染动画所需的所有资源,就像它只是应用程序中的另一个静态资源一样。...在 Lottie 4.0 中,AirBnb 放弃了使用 CADisplayLink 在主 CPU 线程上制作图形动画的原始方法: 每帧一次,Lottie 将在主线程上执行代码,以推进动画的进度并重新渲染其内容...例如,Airbnb 应用程序在首次启动时显示 Lottie 动画。我们在这里进行了一项实验,发现切换到新的渲染引擎可以缩短应用程序的总启动时间,同时还可以提高启动动画的帧速和用户体验。...你可以从 GitHub repo 或使用包管理器(如 CocoaPods、Carthage 或 Swift 包管理器)安装它。 作者简介: Sergio De Simone 是一名软件工程师。

    2K20
    领券