版權聲明:本文為部落客原創文章,轉載請标明出處。 https://blog.csdn.net/lyhhj/article/details/73554768
緒論
之前分享了一篇
Base封裝(一)–我的最簡MVP架構簡單的封裝了自己的MVP架構,至于BaseActivity和BaseFragment之前的文章都已經分享過了,隻不過做了一些優化。接下來繼續分享我的封裝之路,今天要分享的是常用的UI,同樣大家看到不合适的地方多多指正啊..
常用元件
在寫一個APP的時候我們通常都會用到一些常用的元件,慢慢的積累下來了就存到自己的庫裡面,以後寫項目的時候就不用再去到處找了,下面看看我收藏了哪些常用的元件吧
1.NoScrollListView、NoScrollGridView、NoScrollViewPager控制不可滑動的元件
我們在某種嵌套下我們可能需要去處理滑動沖突,這三個是我經常會用到的,當然已經改用RecycleView很久了,是以前兩個不會再用了,至于NoScrollViewPager我經常會用到的場景就是在ViewPager裡嵌套ViewPager可能會用到,代碼我就不貼了,在項目裡面都會有的。實作思路也很簡單:
NoScrollListView和NoScrollGridView的實作思路就是繼承ListView和GridView重寫OnMeasure()方法,但是估計很多人都說不出來原理吧。
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
如上所示,makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST)
這兩個參數分别代表着
size:表示福布局提供給你的大小參考
model:表示測量規則,共有EXACTLY、AT_MOST、UNSPECIFIED三種
-
EXACTLY
表示父視圖希望子視圖的大小應該是由specSize的值來決定的,系統預設會按照這個規則來設定子視圖的大小,開發人員當然也可以按照自己的意願設定成任意的大小。
-
AT_MOST
表示子視圖最多隻能是specSize中指定的大小,開發人員應該盡可能小得去設定這個視圖,并且保證不會超過specSize。系統預設會按照這個規則來設定子視圖的大小,開發人員當然也可以按照自己的意願設定成任意的大小。
-
UNSPECIFIED
表示開發人員可以将視圖按照自己的意願設定成任意的大小,沒有任何限制。這種情況比較少見,不太會用到。
具體解析大家可以看看這篇文章
http://blog.csdn.net/xuefu_78/article/details/51760585從源碼角度進行分析的
至于NoScrollViewPager就是攔截OnTouch事件就行了。
2. CircleImageView
圓形的頭像ImageView我一直都用的是這個
https://github.com/hdodenhof/CircleImageView3.ProgressBar
對于loading加載框這個網上已經有很多了,各式各樣的,如果UI需要你定制的話那就自己自定義一個,如果不需要我一直用的都是之前找到的一個感覺挺好的,仿簡書的樣子
4.統一的Dialog
Dialog的樣式也有很多,一般常用的提示類的個人還是喜歡Android原生态的那種MD風格的Dialog,一直以來用的都是
com.github.afollestad.material-dialogs5.下拉重新整理、上拉加載
說到這個真的是有很多很多了,以前的PullToRefresh到現在的SwipeRefresgLayout,網上的資源很多,看個人喜好,分享一個下拉重新整理集合,需要的拿去吧
衆多優秀的下拉重新整理(除了我寫的之外T_T)6.Picker元件
7…….
還有一些就不具體介紹了,我會把我的庫上傳到Github
好了下面介紹一下相關資源的東西
資源篇
1.命名規範
對于命名規範這個東西一直來說都是一個頭疼的東西,随着項目的更新疊代,各式各樣的命名都出來了,有時候為了進度,命名就随意來了,寫的時候想着先把功能搞完回來再改,但是當你真的一點一點累加起來之後你才會發現天呐,這該怎麼改,資源在哪裡使用了,即使你的IDE功能再強大,當你去找那些資源檔案的時候也會很頭疼,是以下面介紹一下一直以來我用的命名規範:

就是這個原理圖
WHAT(是什麼)
表明資源實際代表什麼,通常是一個标準的android view,資源類型選項有限。
(例如:MainActivity->activity)
WHERE(在何處)
描述它在app的邏輯子產品,如果在多個頁面用到使用all,其他的就用 使用該資源的頁面所處的邏輯子產品
(例如:MainActiviy->main,ArticleDetailFragment->articledetail)
DESCRIPTION(描述)
用來區分一個頁面中多個相同元素
(例如:title)
SIZE(大小)可選
一個精确的大小或尺寸,可用于drawables和dimensions
(例如:24dp,small)
詳情請參考
一種成功的xml資源命名規範代碼已經上傳到我的Github
https://github.com/Hankkin/HBase