简介:本篇文章主要介绍Android12原生车机桌面卡片相关的设计模式和设计架构,为相关的车机桌面定制开发提供相关参考和思路。
图1
如上图1所示,卡片1是AssitiveCard,主要功能有2个:1)展示天气信息,原生的是假数据2)展示投屏应用;卡片2是AudioCard,主要功能有两个:1)展示多媒体应用,主要是音乐2)展示来电话信息;卡片不仅是用来展示应用,而且可以与用户进行交互。
Android12桌面卡片源码对应的文件目录如下图2所示
图2
如图2文件目录ui所示,ui目录下的接口是卡片的UI组成,如下图3所示,主要分为两块,卡片标题CardHeader和卡片内容CardContent,卡片内容根据不同的数据源分为三种具体的View。
图3
1、桌面卡片的MVP设计架构
图4
如上图4所示,是MVP的典型架构,View即视图层,如Fragment或Activity,Model是数据层,对数据及其操作做了封装,Presenter是逻辑控制层,是Model和View之间进行通信的桥梁和枢纽,三者之间是独立和解耦的,View和Presenter,Model和Presenter之间分别相互持有对方的引用,以此来作为彼此通信的基础。
结合图2,桌面卡片的MVP设计架构涉及到的具体接口如下图5所示
图5
2、桌面卡片的设计模式
为了更详细地体现图2各个接口之间的关系和图5的MVP设计模式,整理图2各个接口,得到如下图6所示的UML类图
图6
如图6所示,这里要强调仅MediaViewModel使用了Jetpack组件****AndroidViewModel和LiveData对媒体数据源进行了管理,当媒体数据源有变化时,可以自动更新View,可详细阅读源码和查阅相关资料,从而对AndroidViewModel和LiveData有进一步地掌握,这里不过多阐述。
图5和图6可结合在一起看,从而对图2卡片源码目录中各个接口之间的关系有更好地把握。
结尾:本文只是从整体的设计架构和设计模式来对桌面卡片源码进行解析,目的是对源码有一个整体的把握,具体的接口实现细节需要自己详细进行阅读,本篇文章是对后续的详细阅读提供帮助。