RE: 从零开始的车载Android HMI(一) - Lottie
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RE: 从零开始的车载Android HMI(一) - Lottie相关的知识,希望对你有一定的参考价值。
参考技术A多年以前汽车还是以机械仪表主体的年代,各大汽车主机厂商并不十分关注操作系统UI的交互功能,但是随着车载SOC算力的不断提高以及主机厂商对汽车座舱竞争的白热化。座舱的HMI在设计上在强调功能性的同时也开始关注UI的艺术性,HMI的设计师们期望艺术与功能应该协同工作,让用户沉浸在“第三空间”的体验中。
有了需求程序员就需要关注如何实施和落地,然而android应用本身虽然有着完整的动画框架支持,但是开发复杂、调试耗时,大型的gif或逐帧动画对于CPU&内存占用都不太理想,所以许多Android的手机应用基本上不怎么有动画。 而且车载HMI上越来越多的开始引入各种光影、粒子效果,如果基于Android的原生控件来实现这些粒子效果,难度非常大,这就需要今天的主角Lottie来实现了。
Lottie 是一种基于JSON的动画文件格式,它使设计师能够在任何平台上发布动画,就像发布静态资产一样简单。它们是在任何设备上工作的小文件,可以在不进行像素化的情况下放大或缩小。
适量图形,不会出现失真
占用空间比序列帧动画小
可以修改属性,动态生成可交互的动画(使用视频动画难以实现交互功能)
节省HMI的开发、调试时间
可以更轻松的实现粒子、光影等特效
然后就可以在布局文件中使用LottieAnimationView了
然后运行APP就可以看到动画效果
LottieAnimationView 继承自AppCompatImageView,所以ImageView支持的属性, LottieAnimationView 都是支持的,这部分就不再介绍了。
如果设定 app:lottie_fileName="other/HamburgerArrow.json",那么lottie就会读取assets/other/HamburgerArrow.json。
void setAnimationFromJson(String jsonString, @Nullable String cacheKey)
void setCacheComposition(boolean cacheComposition)
Lottie的Demo中内置了很多官方自己开发的动画效果,目的是为我们展示Lottie的常见用法,作为开发者我们必须掌握,并在适当的时候运用到我们的应用中。
该效果展示了lottie支持动态修改json,让动画中的一小部分属性发生改变。
KeyPath 中的 LeftArmWave 是Json中的一个属性
修改的效果如下。注意看右手的摆动频率X3后比X1高,以至于录制的GIF直接丢帧了。
修改后的效果如下
修改后的效果如下
该效果展示了动画文字效果。这个效果实现起来其实不难,从程序中捕获输入的字母,再替换成lottie的资源文件即可。
注意,这里其实用了两个lottieView,分别设定了不同的文字。
该效果展示通过监听点击事件来播放不同的lottie动画。这个效果最常见,APP中的点赞效果大多都是这样的实现思路。
在车载HMI开发中往往我们会在实现、调试UI上花费大量的时间,如果能够灵活的运用Lottie,就可以显著节省程序的开发时间。例如,光影、粒子等特效虽然可以也考虑用Kanzi等3D引擎实现,但是3D引擎会消耗成倍的SOC性能,实际开发过程中,简单的特效使用Lottie实现,可以极大的优化应用的性能,给用户一个更优秀的体验。
本篇很多内容参考了 《Android自定义控件高级进阶与精彩实例(博文视点出品)》(启舰)【摘要 书评 试读】- 京东图书 这本书的内容,写得相当不错,非常值得认真阅读。
下一篇来讲讲车载HMI开发时都会用到的一个系统组件 - Widget
还不知道什么是汽车HMI设计?进来带你快速了解
《Android自定义控件高级进阶与精彩实例(博文视点出品)》(启舰)【摘要 书评 试读】- 京东图书
大厂都在进军车载应用?Android车载应用开发,从零开始一起学
前言
随着互联网的飞速发展,越来越多的大厂都在进军车载行业,车载技术算是当下非常火热的技术。就目前而言,车载Android开发依然有着不错的前景,今天就一起来看看车载应用从零开始要学什么东西。
关注+评论(车载) 领取下面车载全套PDF文档和 《整套50W字Android体系PDF》 ,让学习更贴近未来实战。
50W字,腾讯T10级Android高级工程师成长;内容全在这里了
内容概括:
1.腾讯Android开发笔记(33W字)
2.2022最新Android十一位大厂面试专题(12W字)
3.音视频经典面试题(6W字)
4.Jetpack全家桶
5.Android 性能监控框架Matrix
6.JVM
7.车载应用开发
1.Android HMI - Lottie
- Lottie概述
- 常用熟悉和用法
2.Android HMI - Widget
- Widget概述
- 如何创建
- APPwidgetProviderinfo属性和使用方法
- APPwidgetProvider使用和说明
- Widget布局和进阶用法
3.Android HMI - SurfaceView
- SurfaceView概述
- Surface-Surfaceview-SurfaceHolder三者
- SurfaceVIew双缓冲机制
- Surfaceview使用注意事项
4.Android Automotive概述与编译
- Android Automotive的介绍
- 创建Android Automotive模拟器
- 下载和编译Android Automotive
- 常见错误解析
5.集成第三方APK
- 应用安装的目录
- 预装APK
- 注意事项
6.构建 MVVM 架构
- MVVM架构分层逻辑
- 封装适合车载应用的MVVM框架
- 基于框架实现MVVM架构
7.编写基于AIDL 的 SDK
- AIDL介绍
- 封装SDK Base类
- 封装SDK
8.CarLauncher
- Launcher与CarLauncher
- CarLauncher功能分析
- CarLauncher源码分析
9.车载多媒体(一)- 音视频基础知识与MediaPlayer
- 音视频基础知识
- MediaPlayer
- 管理音频焦点
10.车载多媒体(二)- 多媒体应用架构与MediaSession框架
- 多媒体应用架构
- MediaSession介绍
- MediaSession实践
- MediaSession API列表
11.车载多媒体(三)- 原生音乐播放器
- LocalMedia
- LocalMediaPlayer核心源码解析
- 媒体播放器-Player
- LocalMedia拆解
- HIMI源码解析
12.车载空调系统(HVAC)
- HVAC介绍和源码结构
- HVAC源码解析
13.车载Android应用开发入门指南
- 车载应用
- 智能汽车座舱基本结构
- 车载应用开发
- 车载Android开发前景
14.SystemUI
- 车载SystemUI
- CarSystemUI启动流程
- 顶部状态栏与底部导航栏
15.车载Android进阶篇 — CMake基础
- CMake介绍
- CMake语法
- CMake常用常量
- CMake常用指令
16.车联网APP通信协议加密分析
- 目标-步骤
- Unidbg手把手跑
- Trace Block
- Trace Code
17.Android车载工程师
- 构建车载媒体应用
- 构建Android Auto即时通信应用
- 构建车载导航和地图标点应用
- 构建Android Automotive OS视频应用
- 测试和分发Android车载应用
- 适用于汽车的Google Play服务
- Android Automotive OS通知
但是,单纯的Android应用工程师在整车座舱上只能负责非常小的一个技术领域,这就已经决定了这个职业的发展高度,如果想突破这层天花板,就必须要深入到Android系统的底层,掌握Framework、HAL甚至于Native的一些运行原理。除此以外,Linux、汽车相关的知识也是需要额外学习的。
1.Framework源码面试合集
2.Handler全篇解析
3.Binder全篇解析
4.LiveData事件机制
5.Framework底层源码(AMS-PMS-WMS-IMS解析)
6.Framework事件机制解析
关注+评论(车载)领取车载全套PDF文档和《整套50W字Android体系PDF》,让学习更贴近未来实战。
50W字,腾讯T10级Android高级工程师成长;内容全在这里了
内容概括:
1.腾讯Android开发笔记(33W字)
2.2022最新Android十一位大厂面试专题(12W字)
3.音视频经典面试题(6W字)
4.Jetpack全家桶
5.Android 性能监控框架Matrix
6.JVM
7.车载应用开发
以上是关于RE: 从零开始的车载Android HMI(一) - Lottie的主要内容,如果未能解决你的问题,请参考以下文章