騰訊最新提高項(xiàng)目 UI 開發(fā)效率的解決方案!
功能特性
全局 UI 配置
只需要修改一份配置表就可以調(diào)整 App 的全局樣式,包括組件顏色、導(dǎo)航欄、對(duì)話框、列表等。一處修改,全局生效。
豐富的 UI 控件
提供豐富常用的 UI 控件,例如 BottomSheet、Tab、圓角 ImageView、下拉刷新等,使用方便靈活,并且支持自定義控件的樣式。
高效的工具方法
提供高效的工具方法,包括設(shè)備信息、屏幕信息、鍵盤管理、狀態(tài)欄管理等,可以解決各種常見場(chǎng)景并大幅度提升開發(fā)效率。
功能列表
組件類
QMUIAnimationListView
使 ListView 支持添加/刪除 Item 的動(dòng)畫,支持自定義動(dòng)畫效果。
QMUIBottomSheet
在 Dialog 的基礎(chǔ)上重新定制了 show() 和 hide() 時(shí)的動(dòng)畫效果, 使 Dialog 在界面底部升起和降下。提供了以下兩個(gè)面板樣式:
列表樣式:使用 QMUIBottomSheet.BottomListSheetBuilder 生成。
宮格類型:使用 QMUIBottomSheet.BottomGridSheetBuilder 生成。
QMUICommonListItemView
用作通用列表 QMUIGroupListView 里的 Item,也可單獨(dú)使用。支持以下樣式:
展示一行文字。
在右側(cè)或下方增加一行說明文字。
在 item 右側(cè)顯示一個(gè)開關(guān)或箭頭或自定義的View
QMUIDialog
提供了一系列常用的對(duì)話框,解決了使用系統(tǒng)默認(rèn)對(duì)話框時(shí)在不同 Android 版本上的表現(xiàn)不一致的問題。使用不同的 Builder 來構(gòu)建不同類型的對(duì)話框,這些 Builder 都擁有設(shè)置 title 和添加底部按鈕的功能,不同的 Builder 特有的作用如下:
MessageDialogBuilder: 消息類型的對(duì)話框 Builder。通過它可以生成一個(gè)帶標(biāo)題、文本消息、按鈕的對(duì)話框。
ConfirmMessageDialogBuilder: 帶 Checkbox 的消息確認(rèn)框 Builder。
EditTextDialogBuilder: 帶輸入框的對(duì)話框 Builder。
MenuDialogBuilder: 菜單對(duì)話框 Builder。
CheckableDialogBuilder: 單選類型的對(duì)話框 Builder。
MultiCheckableDialogBuilder: 多選類型的對(duì)話框 Builder。
CustomDialogBuilder: 自定義對(duì)話框內(nèi)容區(qū)域的 Builder。
AutoResizeDialogBuilder: 隨鍵盤升降自動(dòng)調(diào)整 Dialog 高度的 Builder
QMUIEmptyView
通用的空界面控件,支持顯示 loading、主標(biāo)題和副標(biāo)題、圖片。
QMUIFloatLayout
類似 CSS 里 float: left 的浮動(dòng)布局,從左到右排列子 View 并自動(dòng)換行。支持以下特性:
控制子 View 之間的垂直/水平間距。
控制子 View 的水平對(duì)齊方向(左對(duì)齊/居中/右對(duì)齊)。
限制子 View 的個(gè)數(shù)或行數(shù)。
QMUIFontFitTextView
使 TextView 在寬度固定的情況下,文字多到一行放不下時(shí)能縮小文字大小來自適應(yīng)。
QMUIGroupListView
通用的列表,常用于 App 的設(shè)置界面,注意其父類不是 ListView 而是 LinearLayout,所以一般要配合 ScrollView 使用。提供了 Section 的概念,用來將列表分塊。配合 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 顯示/隱藏軟鍵盤,并且提供了工具方法判斷鍵盤是否當(dāng)前可見。
QMUILinkTextView
使 TextView 能自動(dòng)識(shí)別 URL、電話、郵箱地址,相比 TextView 有以下特點(diǎn):
可以設(shè)置鏈接的樣式。
可以設(shè)置鏈接的點(diǎn)擊事件。
QMUILoadingView
用于顯示 Loading 的 View,支持顏色和大小的設(shè)置。
QMUIObservableScrollView
可以監(jiān)聽滾動(dòng)事件的 ScrollView,并能在滾動(dòng)回調(diào)中獲取每次滾動(dòng)前后的偏移量。
QMUIPopup
提供一個(gè)浮層,支持自定義浮層的內(nèi)容,支持在指定 View 的任一方向旁邊展示該浮層,支持自定義浮層出現(xiàn)/消失的動(dòng)畫。
QMUIListPopup
繼承自 QMUIPopup,在 QMUIPopup 的基礎(chǔ)上,支持顯示一個(gè)列表。
QMUIProgressBar
一個(gè)進(jìn)度條控件,通過顏色變化顯示進(jìn)度,支持環(huán)形和矩形兩種形式,主要特性如下:
支持在進(jìn)度條中以文字形式顯示進(jìn)度,支持修改文字的顏色和大小。
可以通過 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è)常見問題:
修正了 TextView 與 ClickableSpan 一起使用時(shí),點(diǎn)擊 ClickableSpan 也會(huì)觸發(fā) TextView 的事件的問題。
修正了 TextView 默認(rèn)情況下如果添加了 ClickableSpan 之后就無法把點(diǎn)擊事件傳遞給 TextView 的 Parent 的問題。
QMUITabSegment
用于橫向多個(gè) Tab 的布局,包含多個(gè)特性:
可以用 xml 或 QMUITabSegment 提供的 set 方法統(tǒng)一配置文字顏色、icon 位置、是否要下劃線等。
每個(gè) Tab 都可以非常靈活的配置,內(nèi)容上支持文字和 icon 的顯示,icon 支持選中態(tài),支持內(nèi)容的排版對(duì)齊方向設(shè)置,支持顯示紅點(diǎn),支持插入自定義的 View,支持監(jiān)聽雙擊事件等。
可以通過 setupWithViewPager(ViewPager) 方法與 ViewPager 綁定。
QMUITipDialog
提供一個(gè)浮層展示在屏幕中間,提供了以下兩種樣式:
使用 QMUITipDialog.Builder 生成,提供了一個(gè)圖標(biāo)和一行文字的樣式, 其中圖標(biāo)有 Loading、成功、失敗等類型可選。
使用 QMUITipDialog.CustomBuilder 生成,支持傳入自定義的 layoutResId。
QMUITopBar
通用的頂部 Bar。提供了以下功能:
在左側(cè)/右側(cè)添加圖片按鈕/文字按鈕/自定義View。
設(shè)置標(biāo)題/副標(biāo)題,且支持設(shè)置標(biāo)題/副標(biāo)題的水平對(duì)齊方式。
QMUITopBarLayout
對(duì) QMUITopBar 的包裹類,并代理了 QMUITopBar 的方法。配合 QMUIWindowInsetLayout 使用,可使 QMUITopBar 在支持沉浸式狀態(tài)欄的界面中頂部延伸到狀態(tài)欄。
QMUIVerticalTextView
在 TextView 的基礎(chǔ)上支持文字豎排。
QMUITouchableSpan
繼承自 ClickableSpan,支持 normal 態(tài)和 press 態(tài)時(shí)有不同的背景顏色以及字體顏色。建議配合 QMUISpanTouchFixTextView 或其子類使用,便于事件傳遞的協(xié)調(diào)。
QMUIWindowInsetLayout
配合沉浸式狀態(tài)欄使用,用于協(xié)調(diào)子 View 的 fitSystemWindows。
QMUIWrapContentListView
支持高度值為 wrap_content 的 ListView,解決原生 ListView 在設(shè)置高度為 wrap_content 時(shí)高度計(jì)算錯(cuò)誤的 bug。
QMUIBlockSpaceSpan
通過在段落之間設(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的不同,無法根據(jù)具體需求進(jìn)行底部對(duì)齊或者頂部對(duì)齊。而 QMUITextSizeSpan 則可以多傳一個(gè)參數(shù),讓你可以根據(jù)具體情況來決定偏移值。
幫助類
QMUIColorHelper
顏色處理工具類,按照功能類型來劃分,總共包含以下幾個(gè)特性:
為一個(gè)顏色設(shè)置透明度。
根據(jù)指定比例,在兩個(gè)顏色值之間計(jì)算出一個(gè)顏色值。
將顏色值轉(zhuǎn)換為字符串。
QMUIDeviceHelper
獲取設(shè)備信息的工具類,按照功能類型來劃分,總共包含以下幾個(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)的工具類,按照功能類型來劃分,總共包含以下幾個(gè)特性:
方便地獲取一個(gè) DisplayMetrics 實(shí)例。
獲取屏幕信息,包括屏幕密度、屏幕寬度和高度、狀態(tài)欄高度、ActionBar 高度等。
獲取設(shè)備硬件信息,包括是否有可用攝像頭、是否有硬件菜單、是否有網(wǎng)絡(luò)、SD Card 是否可用、當(dāng)前選擇的國(guó)家語言等。
判斷當(dāng)前是否處于全屏狀態(tài),控制進(jìn)入/退出全屏狀態(tài)。
dp 與 px 數(shù)值的相互轉(zhuǎn)化。
QMUIDrawableHelper
快速繪制一張指定大小、顏色、邊框的圖片,支持形狀為圓角矩形和圓形。
快速繪制一張帶上分隔線或下分隔線的圖片。
快速繪制一張可帶圓角的漸變圖片。
將當(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 類型的 Attr。
QMUISpanHelper
提供了方法使得 QMUIMarginImageSpan 能被更便捷地使用。
QMUIStatusBarHelper
狀態(tài)欄相關(guān)的工具類,按照功能類型來劃分,總共包含以下幾個(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 工具類,按照功能類型來劃分,總共包含以下幾個(gè)特性:
對(duì) ImageView 進(jìn)行處理,可以按比例縮放圖片。
對(duì) View 做背景顏色變化動(dòng)畫,支持多個(gè)動(dòng)畫參數(shù)。
對(duì) View 做進(jìn)退場(chǎng)動(dòng)畫,支持透明度變化和上下位移兩種方式。
提供多個(gè)常用的 View 相關(guān)工具方法,如對(duì) View 設(shè)置單個(gè)方向的 padding、從 ViewStub 中獲取一個(gè) View、判斷 ListView 是否已經(jīng)滾動(dòng)到底部等等。
支持 Android 版本
QMUI Android 支持 API Level 19+。
項(xiàng)目地址
官網(wǎng):http://qmuiteam.com/android
