QMUI Android 簡(jiǎn)介
QMUI Android 的設(shè)計(jì)目的是用于輔助快速搭建一個(gè)具備基本設(shè)計(jì)還原效果的 Android 項(xiàng)目唱遭,同時(shí)利用自身提供的豐富控件及兼容處理,讓開(kāi)發(fā)者能專(zhuān)注于業(yè)務(wù)需求而無(wú)需耗費(fèi)精力在基礎(chǔ)代碼的設(shè)計(jì)上。不管是新項(xiàng)目的創(chuàng)建,或是已有項(xiàng)目的維護(hù),均可使開(kāi)發(fā)效率和項(xiàng)目質(zhì)量得到大幅度提升
功能特性
只需要修改一份配置表就可以調(diào)整 App 的全局樣式峡眶,包括組件顏色、導(dǎo)航欄植锉、對(duì)話(huà)框、列表等峭拘。一處修改俊庇,全局生效狮暑。
提供豐富常用的 UI 控件,例如 BottomSheet辉饱、Tab搬男、圓角 ImageView、下拉刷新等彭沼,使用方便靈活缔逛,并且支持自定義控件的樣式。
提供高效的工具方法姓惑,包括設(shè)備信息褐奴、屏幕信息、鍵盤(pán)管理于毙、狀態(tài)欄管理等敦冬,可以解決各種常見(jiàn)場(chǎng)景并大幅度提升開(kāi)發(fā)效率
Components Classes
QMUIAnimationListView
使 ListView 支持添加/刪除 Item 的動(dòng)畫(huà),支持自定義動(dòng)畫(huà)效果唯沮。
QMUIBottomSheet
在 Dialog 的基礎(chǔ)上重新定制了 show() 和 hide() 時(shí)的動(dòng)畫(huà)效果, 使 Dialog 在界面底部升起和降下脖旱。提供了以下兩個(gè)面板樣式:
列表樣式:使用 QMUIBottomSheet.BottomListSheetBuilder 生成。
宮格類(lèi)型:使用 QMUIBottomSheet.BottomGridSheetBuilder 生成介蛉。
QMUICommonListItemView
用作通用列表 QMUIGroupListView 里的 Item萌庆,也可單獨(dú)使用。支持以下樣式:
展示一行文字币旧。
在右側(cè)或下方增加一行說(shuō)明文字踊兜。
在 item 右側(cè)顯示一個(gè)開(kāi)關(guān)或箭頭或自定義的View
QMUIDialog
提供了一系列常用的對(duì)話(huà)框,解決了使用系統(tǒng)默認(rèn)對(duì)話(huà)框時(shí)在不同 Android 版本上的表現(xiàn)不一致的問(wèn)題佳恬。使用不同的 Builder 來(lái)構(gòu)建不同類(lèi)型的對(duì)話(huà)框捏境,這些 Builder 都擁有設(shè)置 title 和添加底部按鈕的功能,不同的 Builder 特有的作用如下:
MessageDialogBuilder: 消息類(lèi)型的對(duì)話(huà)框 Builder毁葱。通過(guò)它可以生成一個(gè)帶標(biāo)題垫言、文本消息、按鈕的對(duì)話(huà)框倾剿。
ConfirmMessageDialogBuilder: 帶 Checkbox 的消息確認(rèn)框 Builder筷频。
EditTextDialogBuilder: 帶輸入框的對(duì)話(huà)框 Builder。
MenuDialogBuilder: 菜單對(duì)話(huà)框 Builder前痘。
CheckableDialogBuilder: 單選類(lèi)型的對(duì)話(huà)框 Builder凛捏。
MultiCheckableDialogBuilder: 多選類(lèi)型的對(duì)話(huà)框 Builder。
CustomDialogBuilder: 自定義對(duì)話(huà)框內(nèi)容區(qū)域的 Builder芹缔。
AutoResizeDialogBuilder: 隨鍵盤(pán)升降自動(dòng)調(diào)整 Dialog 高度的 Builder
QMUIEmptyView
通用的空界面控件坯癣,支持顯示 loading、主標(biāo)題和副標(biāo)題最欠、圖片示罗。
QMUIFloatLayout
類(lèi)似 CSS 里 float: left 的浮動(dòng)布局惩猫,從左到右排列子 View 并自動(dòng)換行。支持以下特性:
控制子 View 之間的垂直/水平間距蚜点。
控制子 View 的水平對(duì)齊方向(左對(duì)齊/居中/右對(duì)齊)轧房。
限制子 View 的個(gè)數(shù)或行數(shù)。
QMUIFontFitTextView
使 TextView 在寬度固定的情況下绍绘,文字多到一行放不下時(shí)能縮小文字大小來(lái)自適應(yīng)奶镶。
QMUIGroupListView
通用的列表,常用于 App 的設(shè)置界面陪拘,注意其父類(lèi)不是 ListView 而是 LinearLayout厂镇,所以一般要配合 ScrollView 使用。提供了 Section 的概念藻丢,用來(lái)將列表分塊剪撬。 配合 QMUIGroupListView.Section, QMUICommonListItemView 和 QMUIGroupListSectionHeaderFooterView 使用。
QMUIGroupListSectionHeaderFooterView
用作通用列表 QMUIGroupListView 里每個(gè) Section 的頭部或尾部悠反,也可單獨(dú)使用残黑。
QMUIItemViewsAdapter
一個(gè)帶 cache 功能的“列表型數(shù)據(jù)-View”的適配器,適用于自定義 View 需要顯示重復(fù)單元 ListView 的情景斋否,cache 功能主要是保證在需要多次刷新數(shù)據(jù)或布局的情況下(ListView 或 RecycleView 的 itemView)復(fù)用已存在的 View梨水。QMUI 用于 QMUITabSegment 中 Tab 與數(shù)據(jù)的適配。
QMUIKeyboardHelper
提供更加便捷的方式針對(duì)給定的 EditText 顯示/隱藏軟鍵盤(pán)茵臭,并且提供了工具方法判斷鍵盤(pán)是否當(dāng)前可見(jiàn)疫诽。
QMUILinkTextView
使 TextView 能自動(dòng)識(shí)別 URL、電話(huà)旦委、郵箱地址奇徒,相比 TextView 有以下特點(diǎn):
可以設(shè)置鏈接的樣式。
可以設(shè)置鏈接的點(diǎn)擊事件缨硝。
QMUILoadingView
用于顯示 Loading 的 View摩钙,支持顏色和大小的設(shè)置。
QMUIObservableScrollView
可以監(jiān)聽(tīng)滾動(dòng)事件的 ScrollView查辩,并能在滾動(dòng)回調(diào)中獲取每次滾動(dòng)前后的偏移量胖笛。
QMUIPopup
提供一個(gè)浮層,支持自定義浮層的內(nèi)容宜岛,支持在指定 View 的任一方向旁邊展示該浮層长踊,支持自定義浮層出現(xiàn)/消失的動(dòng)畫(huà)。
QMUIListPopup
繼承自 QMUIPopup萍倡,在 QMUIPopup 的基礎(chǔ)上身弊,支持顯示一個(gè)列表。
QMUIProgressBar
一個(gè)進(jìn)度條控件,通過(guò)顏色變化顯示進(jìn)度佑刷,支持環(huán)形和矩形兩種形式莉擒,主要特性如下:
支持在進(jìn)度條中以文字形式顯示進(jìn)度酿炸,支持修改文字的顏色和大小瘫絮。
可以通過(guò) xml 屬性修改進(jìn)度背景色,當(dāng)前進(jìn)度顏色填硕,進(jìn)度條尺寸麦萤。
支持限制進(jìn)度的最大值。
QMUIPullRefreshLayout
下拉刷新控件扁眯。支持自定義 RefreshView(表示正在刷新的 View)壮莹,觸發(fā)刷新的位置等特性。
QMUIQQFaceView
支持顯示表情的偽 TextView(繼續(xù)自定義 View,而不是真正的 TextView), 實(shí)現(xiàn)了 TextView 的 maxLine姻檀、ellipsize命满、textSize、textColor 等基本功能绣版。
支持與 QMUITouchableSpan 配合使用實(shí)現(xiàn)內(nèi)容可點(diǎn)擊胶台。
QMUIQQFaceCompiler
QMUIQQFaceView 的內(nèi)容解析器,將文本內(nèi)容解析成 QMUIQQFaceView 想要的數(shù)據(jù)格式杂抽。
IQMUIQQFaceManager
QMUIQQFaceView 資源管理接口诈唬,使用 QMUIQQFaceView 必須實(shí)現(xiàn)這個(gè)接口以提供表情資源。
QMUIRadiusImageView
提供為圖片添加圓角缩麸、邊框铸磅、剪裁到圓形或其他形狀等功能。
QMUIRoundButton
對(duì) Button 提供圓角功能杭朱,支持以下特性:
指定圓角的大小阅仔。
分別指定不同方向的圓角大小。
指定圓角的大小為高度的一半弧械,并跟隨高度變化自適應(yīng)圓角大小八酒。
支持分別指定背景色和邊框色,指定顏色時(shí)支持使用 color 或 ColorStateList梦谜。
QMUIRoundButtonDrawable
使用該 Drawable 可以方便地生成圓角矩形/圓形 Drawable丘跌,提供設(shè)置背景色、描邊大小和顏色唁桩、圓角自適應(yīng) View 高度等特性闭树。
QMUISpanTouchFixTextView
相比 TextView,修正了兩個(gè)常見(jiàn)問(wèn)題:
修正了 TextView 與 ClickableSpan 一起使用時(shí)荒澡,點(diǎn)擊 ClickableSpan 也會(huì)觸發(fā) TextView 的事件的問(wèn)題报辱。
修正了 TextView 默認(rèn)情況下如果添加了 ClickableSpan 之后就無(wú)法把點(diǎn)擊事件傳遞給 TextView 的 Parent 的問(wèn)題。
QMUITabSegment
用于橫向多個(gè) Tab 的布局单山,包含多個(gè)特性:
可以用 xml 或 QMUITabSegment 提供的 set 方法統(tǒng)一配置文字顏色碍现、icon 位置幅疼、是否要下劃線(xiàn)等。
每個(gè) Tab 都可以非常靈活的配置昼接,內(nèi)容上支持文字和 icon 的顯示爽篷,icon 支持選中態(tài),支持內(nèi)容的排版對(duì)齊方向設(shè)置慢睡,支持顯示紅點(diǎn)逐工,支持插入自定義的 View,支持監(jiān)聽(tīng)雙擊事件等漂辐。
可以通過(guò) setupWithViewPager(ViewPager) 方法與 ViewPager 綁定泪喊。
QMUITipDialog
提供一個(gè)浮層展示在屏幕中間,提供了以下兩種樣式:
使用 QMUITipDialog.Builder 生成髓涯,提供了一個(gè)圖標(biāo)和一行文字的樣式, 其中圖標(biāo)有 Loading袒啼、成功、失敗等類(lèi)型可選纬纪。
使用 QMUITipDialog.CustomBuilder 生成蚓再,支持傳入自定義的 layoutResId。
QMUITopBar
通用的頂部 Bar育八。提供了以下功能:
在左側(cè)/右側(cè)添加圖片按鈕/文字按鈕/自定義View对途。
設(shè)置標(biāo)題/副標(biāo)題,且支持設(shè)置標(biāo)題/副標(biāo)題的水平對(duì)齊方式髓棋。
QMUITopBarLayout
對(duì) QMUITopBar 的包裹類(lèi)实檀,并代理了 QMUITopBar 的方法。配合 QMUIWindowInsetLayout 使用按声,可使 QMUITopBar 在支持沉浸式狀態(tài)欄的界面中頂部延伸到狀態(tài)欄膳犹。
QMUIVerticalTextView
在 TextView 的基礎(chǔ)上支持文字豎排。
QMUITouchableSpan
繼承自 ClickableSpan签则,支持 normal 態(tài)和 press 態(tài)時(shí)有不同的背景顏色以及字體顏色须床。建議配合 QMUISpanTouchFixTextView 或其子類(lèi)使用,便于事件傳遞的協(xié)調(diào)渐裂。
QMUIWindowInsetLayout
配合沉浸式狀態(tài)欄使用豺旬,用于協(xié)調(diào)子 View 的 fitSystemWindows。
QMUIWrapContentListView
支持高度值為 wrap_content 的 ListView柒凉,解決原生 ListView 在設(shè)置高度為 wrap_content 時(shí)高度計(jì)算錯(cuò)誤的 bug族阅。
QMUIBlockSpaceSpan
通過(guò)在段落之間設(shè)置該 span,實(shí)現(xiàn)段間距的效果膝捞。
QMUICustomTypefaceSpan
支持以 Typeface 的方式設(shè)置 span 的字體坦刀,實(shí)現(xiàn)自定義字體的效果。
QMUIAlignMiddleImageSpan
繼承自 ImageSpan,在此基礎(chǔ)上實(shí)現(xiàn)讓 span 垂直居中的效果鲤遥。
QMUIMarginImageSpan
繼承自 QMUIMarginImageSpan沐寺,在此基礎(chǔ)上支持設(shè)置圖片的左右間距。
QMUITextSizeSpan
支持調(diào)整字體大小的 span盖奈。AbsoluteSizeSpan 可以調(diào)整字體大小混坞,但在中英文混排下由于decent的不同,無(wú)法根據(jù)具體需求進(jìn)行底部對(duì)齊或者頂部對(duì)齊卜朗。而 QMUITextSizeSpan 則可以多傳一個(gè)參數(shù)拔第,讓你可以根據(jù)具體情況來(lái)決定偏移值咕村。
Helper Classes
QMUIColorHelper
顏色處理工具類(lèi)场钉,按照功能類(lèi)型來(lái)劃分,總共包含以下幾個(gè)特性:
為一個(gè)顏色設(shè)置透明度懈涛。
根據(jù)指定比例逛万,在兩個(gè)顏色值之間計(jì)算出一個(gè)顏色值。
將顏色值轉(zhuǎn)換為字符串批钠。
QMUIDeviceHelper
獲取設(shè)備信息的工具類(lèi)宇植,按照功能類(lèi)型來(lái)劃分,總共包含以下幾個(gè)特性:
判斷設(shè)備為手機(jī)/平板埋心。
判斷設(shè)備是否為魅族手機(jī)指郁。
判斷當(dāng)前系統(tǒng)是否為 Flyme 系統(tǒng)。
判斷當(dāng)前系統(tǒng)是否為 MIUI 系統(tǒng)拷呆。
判斷當(dāng)前是否擁有懸浮窗權(quán)限闲坎。
QMUIDisplayHelper
屏幕相關(guān)的工具類(lèi),按照功能類(lèi)型來(lái)劃分茬斧,總共包含以下幾個(gè)特性:
方便地獲取一個(gè) DisplayMetrics 實(shí)例腰懂。
獲取屏幕信息,包括屏幕密度项秉、屏幕寬度和高度绣溜、狀態(tài)欄高度、ActionBar 高度等娄蔼。
獲取設(shè)備硬件信息怖喻,包括是否有可用攝像頭、是否有硬件菜單岁诉、是否有網(wǎng)絡(luò)锚沸、SD Card 是否可用、當(dāng)前選擇的國(guó)家語(yǔ)言等唉侄。
判斷當(dāng)前是否處于全屏狀態(tài)咒吐,控制進(jìn)入/退出全屏狀態(tài)。
dp 與 px 數(shù)值的相互轉(zhuǎn)化。
QMUIDrawableHelper
快速繪制一張指定大小恬叹、顏色候生、邊框的圖片,支持形狀為圓角矩形和圓形绽昼。
快速繪制一張帶上分隔線(xiàn)或下分隔線(xiàn)的圖片唯鸭。
快速繪制一張可帶圓角的漸變圖片。
將當(dāng)前圖片的顏色換成另一個(gè)顏色硅确。
將兩張圖片疊加后生成一張新的圖片目溉。
對(duì)某個(gè) View 截圖生成圖片。
QMUIPackageHelper
提供簡(jiǎn)便的方式獲取 App 的版本信息菱农,可以單獨(dú)獲取主版本號(hào)缭付、次版本號(hào)以及修正版本號(hào)。
QMUIResHelper
封裝了更加便捷的方法循未,用于獲取當(dāng)前 Theme 下的 Attr 值陷猫,支持 Float、Color的妖、ColorStateList绣檬、Drawable 和 Dimen 類(lèi)型的 Attr。
QMUISpanHelper
提供了方法使得 QMUIMarginImageSpan 能被更便捷地使用嫂粟。
QMUIStatusBarHelper
狀態(tài)欄相關(guān)的工具類(lèi)娇未,按照功能類(lèi)型來(lái)劃分,總共包含以下幾個(gè)特性:
快速實(shí)現(xiàn)沉浸式狀態(tài)欄(支持 4.4 以上版本的 MIUI 和 Flyme星虹,以及 5.0 以上版本的其他 Android)零抬。
快速設(shè)置狀態(tài)欄為黑色或白色字體圖標(biāo)(支持 4.4 以上版本 MIUI 和 Flyme,以及 6.0 以上版本的其他 Android)搁凸。
提供多個(gè)常用的工具方法媚值,如獲取狀態(tài)欄高度、判斷當(dāng)前是否全屏等等护糖。
QMUIViewHelper
View 工具類(lèi)褥芒,按照功能類(lèi)型來(lái)劃分,總共包含以下幾個(gè)特性:
對(duì) ImageView 進(jìn)行處理嫡良,可以按比例縮放圖片锰扶。
對(duì) View 做背景顏色變化動(dòng)畫(huà),支持多個(gè)動(dòng)畫(huà)參數(shù)寝受。
對(duì) View 做進(jìn)退場(chǎng)動(dòng)畫(huà)坷牛,支持透明度變化和上下位移兩種方式。
提供多個(gè)常用的 View 相關(guān)工具方法很澄,如對(duì) View 設(shè)置單個(gè)方向的 padding京闰、從 ViewStub 中獲取一個(gè) View颜及、判斷 ListView 是否已經(jīng)滾動(dòng)到底部等等。