MaterialDialogs源码解析(一)

来源:互联网 发布:什么叫开车 网络用词 编辑:程序博客网 时间:2024/05/23 00:02

概述

不久前接触到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。

BaseDialog

List dialog

List dialog是以列表的形式表现的对话框,主体内容和Base dialog相同,不同之处在于其将中间content内容换成了列表;List dialog分为三种类型,分别为:

  • BaseListDialog
  • SingleChoiceDialog
  • MultiChoiceDialog

List dialog的展示效果如下所示:
BaseListDialog

SingleChoiceDialog

MultiChoiceDialog

Progress dialog

Progress dialog 是展示进度条的对话框,主体内容和Base Dialog基本相同,不同之处在于其将中间content内容变成了进度条;此外,通常使用时不显示action button部分。Progress dialog有三种类型,分别为:

  • Simple progress
  • Indeterminate Horizontal progress
  • Indeterminate progress

Progress dialog的效果图依次如下:
SimpleProgress

IndeterminateHorizontalProgress

IndeterminateProgress

Custom View Dialog

Custom view dialog是展示自定义内容的对话框,主体内容和Base dialog相同,不同之处在于将content内容自定义化,可以放入任意的布局内容,如文本、列表、时间选择器等,效果图如下(不局限于此一种):
这里写图片描述

Input Dialog

Input dialog是一个可以输入文本的对话框,在Base dialog的基础之上将content内容设置为可输入内容,并自动对输入内容做出响应,效果图如下:
这里写图片描述

至此,关于material dialog这个第三方库的核心的使用效果就介绍完了,当然,并不仅仅局限于这些,利用它基本上可以实现任意类型的对话框需求了,是不是功能很强大。后面主要介绍代码的整体架构以及实现。最后附上官方代码地址material-dialogs

原创粉丝点击