概述
不久前接触到Material Dialogs这个第三方库,感觉用起来很方便,恰巧刚刚研究了View的整个绘制及工作原理,所以就产生了从源码角度了解一下这个库是如何实现的,进而增加对自定义View的认识。
要想了解一个第三方库,首先要弄清楚它是什么,即它的表现形式是怎样的?顾名思义,Material Dialogs是一个对话框,一个符合material思想的定制版的对话框。根据我的理解,该库的核心内容分为以下几种表现形式:
- Base dialog
- List dialog
- Progress dialog
- customView dialog
- input dialog
Base dialog
Base dialog是最基础的表现形式,界面如下图所示,分为上(title)、中(content)、下(action button)三部分,所有内容全部自定义,title和action button两部分可以按需显示,action button 有三个,分别是positive、neutral、negative。
List dialog
List dialog是以列表的形式表现的对话框,主体内容和Base dialog相同,不同之处在于其将中间content内容换成了列表;List dialog分为三种类型,分别为:
- BaseListDialog
- SingleChoiceDialog
- MultiChoiceDialog
List dialog的展示效果如下所示:
Progress dialog
Progress dialog 是展示进度条的对话框,主体内容和Base Dialog基本相同,不同之处在于其将中间content内容变成了进度条;此外,通常使用时不显示action button部分。Progress dialog有三种类型,分别为:
- Simple progress
- Indeterminate Horizontal progress
- Indeterminate progress
Progress dialog的效果图依次如下:
Custom View Dialog
Custom view dialog是展示自定义内容的对话框,主体内容和Base dialog相同,不同之处在于将content内容自定义化,可以放入任意的布局内容,如文本、列表、时间选择器等,效果图如下(不局限于此一种):
Input Dialog
Input dialog是一个可以输入文本的对话框,在Base dialog的基础之上将content内容设置为可输入内容,并自动对输入内容做出响应,效果图如下:
至此,关于material dialog这个第三方库的核心的使用效果就介绍完了,当然,并不仅仅局限于这些,利用它基本上可以实现任意类型的对话框需求了,是不是功能很强大。后面主要介绍代码的整体架构以及实现。最后附上官方代码地址material-dialogs