AFBaseLibrary

這個庫,其實我之前已經(jīng)有封裝過一些了亲善,但是感覺還不規(guī)范,還差了些內(nèi)容逗柴,所以這次特意從開一個項目來專門做這個事情蛹头。畢竟我認(rèn)為開發(fā)和搞藝術(shù)一樣,我們也是追求完美的戏溺。

項目地址

摘要

首先這個庫的意圖在于:能夠快速高效的開發(fā)渣蜗;里邊會包含到大部分在一個應(yīng)用軟件中用到的功能點的封裝,作為這樣一個庫旷祸,這里封裝的每一個功能點都應(yīng)該需要做到便于擴(kuò)展耕拷。下面介紹一下這個庫中包含的功能點:

  • 界面(常用的Activity和Fragment)
  • 提示相關(guān)(Dialog、Toast托享、PopUpWindow等)
  • 網(wǎng)絡(luò)模塊
  • 常用工具類集成
  • 常用的三方包引入

之后會展開對每一個功能點進(jìn)行詳細(xì)的說明骚烧,這幾個模塊是我自己根據(jù)項目的積累所認(rèn)為的一些有必要的封裝。

注:建議以Module的方式引入闰围,這樣方便根據(jù)自己項目情況進(jìn)行調(diào)整止潘。

這里沒有太多的使用指南,更多是在Sample代碼中體現(xiàn)辫诅。

若是有疑問的可隨時提問凭戴,看到后就會及時處理

實現(xiàn)與介紹

界面

這部分包含了我在項目中所遇到的一些常見的界面結(jié)構(gòu)的整理,其中Activity和Fragment都會有相匹配的功能炕矮,即Activity有的功能么夫,F(xiàn)ragment也會包含,所以下文就以View作為界面的統(tǒng)稱肤视,有如下幾個部分:

這里再給出一張這些類的繼承關(guān)系結(jié)構(gòu)圖:

AFLibViewsStruct.png

每個界面困后,采用了面向接口編程乐纸,由于既有Activity又有Fragment,為了避免寫的實現(xiàn)代碼摇予,所以我又抽取了對應(yīng)的Helper去封裝汽绢,而Helper提供的一些和界面類似的方法,只是為了提供一個default的值侧戴,而界面中的方法是為了讓子類繼承后可重寫宁昭,方便修改跌宛。

注:這種設(shè)計方法是我自己想的,感覺還差點什么积仗,因為細(xì)心的同學(xué)能很快發(fā)現(xiàn)其實疆拘,Activity和Fragment中的代碼幾乎是一樣的,只是繼承的對象不同而已寂曹,但是因為目前還不知如何去更好的處理這種情況入问,如果哪位仁兄有高見可隨時聯(lián)系我,或者提issue稀颁。

網(wǎng)絡(luò)模塊

在項目中網(wǎng)絡(luò)請求肯定是必不可少的芬失,目前來看Retrofit的使用應(yīng)該是比較大眾的,使用熟悉之后會覺得方便很多匾灶,目前這個模塊封裝的功能包括:

  • 通過泛型初始化一個默認(rèn)的請求接口棱烂,若想對請求接口分模塊書寫,也方便擴(kuò)展阶女;
  • 支持https颊糜,只需傳入證書名稱;
  • BaseNetService與BaseNet同時被繼承使用秃踩,可解決請求可能產(chǎn)生的內(nèi)存泄漏衬鱼;

可擴(kuò)展的功能(因為這些部分都是需要與后臺寫作的所以沒法寫固定了):

  • 支持重寫convert,自定義解析憔杨;
  • 錯誤信息可通過繼承ApiCallback統(tǒng)一處理鸟赫。

具體例子可看Sample中的CategoryFragment,每個類實現(xiàn)起來都很簡單消别,很方便抛蚤,其中自定義Convert解析與后臺約定好后,基本是寫一次就可以每次使用了寻狂。

注:其中https請求可自行調(diào)試岁经,Sample中暫未例子。

提示相關(guān)

BaseDialog

在Android中自定義Dialog還是比較常見的蛇券,而我們也是有好些代碼是會經(jīng)常重復(fù)寫的缀壤,所以這里我也簡單的封裝了一下:

  • 寬和高的重新定義,可重寫getWidth和getHeight方法改變默認(rèn)值纠亚;
  • 定義了從底部彈出的動畫塘慕;
  • 定義了一些常見的Dialog的style;

有了這些菜枷,我們就能更容易的實現(xiàn)一個Dialog苍糠,當(dāng)然如果沒有特別要求的Dialog使用v7包下的AlertDialog也是挺好的叁丧。

其中在Sample中自定義了一個簡單的dialog(TipsDialog)啤誊,簡單介紹如何使用岳瞭。

BasePopupWindow

這里簡單的封裝了一下PopupWindow,直接定義好了一些常見的配置蚊锹,調(diào)整了位置的控制方式瞳筏,提供了一個靈活的在View的上下(2種),或者是在屏幕的某個方位(上中下x左中右的9種組合)牡昆,共計11種組合姚炕,也支持相應(yīng)的偏移量。

其中X方向的偏移量都是丢烘,大于0則向右偏柱宦,小于0向左偏;
Y方向的偏移量通常都是播瞳,大于0向下掸刊,小于0向上;

使用方式:

  • 繼承BasePopupWindow赢乓,例如為PopA忧侧;
  • 重寫抽象方法,其中g(shù)etContentViewId為內(nèi)容布局牌芋,getContentDefaultWidth為內(nèi)容的寬度蚓炬,需要設(shè)置為具體數(shù)值,構(gòu)造方法無需修改躺屁。
  • 在界面中顯示肯夏,創(chuàng)建一個PopA實例,其中需要傳入context和一個在界面中最上方添加的寬或高都為0的View(用于保證PopupWindow的位置)犀暑,并調(diào)用自定義的11種show方法熄捍;

這樣是用起來就很簡單了,其中還包含了像Dialog一樣都會有陰影母怜,更多細(xì)節(jié)可以看看Sample中的TipsPopupWindow如何使用即可余耽。

注:因為設(shè)置了陰影,所以彈出動畫的方法會有些問題苹熏,所以不建議使用彈出動畫

ProgressBar與ProgressDialog

待實現(xiàn)...

常用工具類

AFGlideUtil

通過封裝Glide碟贾,實現(xiàn)圖片加載,包含:

  • 加載圖片
  • 加載高斯模糊的圖片
  • 加載圓角圖片
  • 加載圓形圖片

AFSizeUtil

這個是用來獲取屏幕大小以及各類尺寸之間的轉(zhuǎn)換所用

AFLog

這個是用于打印日志轨域,簡單封裝Logger日志庫袱耽,可在Application中設(shè)置是否為Debug,不是Debug時干发,就能不打印

WeakHandler

避免內(nèi)存泄露的Handler朱巨,使用時需要實現(xiàn)IWeakHandler接口,用于處理消息回調(diào)

注:工具類待續(xù)...

常用的三方包

引入的依賴包包:

def supportVersion = "25.3.1"
compile 'com.android.support:appcompat-v7:'.concat(supportVersion)
compile 'com.android.support:recyclerview-v7:'.concat(supportVersion)
compile 'com.android.support:support-v4:'.concat(supportVersion)
compile 'com.android.support:percent:'.concat(supportVersion)
compile 'com.android.support:design:'.concat(supportVersion)
//retrofit+rxjava
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.2.0'
compile 'io.reactivex:rxjava:1.2.1'
compile 'io.reactivex:rxandroid:1.2.1'
compile 'com.google.code.gson:gson:2.7'
//圖片加載
compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'
compile 'com.github.bumptech.glide:glide:3.7.0'
//頁面事件交互
compile 'org.greenrobot:eventbus:3.0.0'
//view注解
compile 'com.jakewharton:butterknife:8.4.0'
compile 'com.jakewharton:butterknife-compiler:8.4.0'
//日志
compile 'com.orhanobut:logger:1.15'
//BGABanner
compile 'cn.bingoogolapple:bga-banner:2.1.7@aar'

代碼混淆

若是要使用代碼混淆枉长,則可以在proguard-rules.pro中查看冀续,除了第三方包的混淆外琼讽,混淆所需的基本的配置也在里邊。

感謝

本庫中引用了一些第三方包(或依賴或下載的源碼)洪唐,在此表示感謝W甑拧!

有任何問題或者建議都可以聯(lián)系我~

License

   Copyright 2017 arvinljw

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凭需,一起剝皮案震驚了整個濱河市问欠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粒蜈,老刑警劉巖顺献,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異枯怖,居然都是意外死亡滚澜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門嫁怀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來设捐,“玉大人,你說我怎么就攤上這事塘淑÷苷校” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵存捺,是天一觀的道長槐沼。 經(jīng)常有香客問我,道長捌治,這世上最難降的妖魔是什么岗钩? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮肖油,結(jié)果婚禮上兼吓,老公的妹妹穿的比我還像新娘。我一直安慰自己森枪,他們只是感情好视搏,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著县袱,像睡著了一般浑娜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上式散,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天筋遭,我揣著相機(jī)與錄音,去河邊找鬼。 笑死漓滔,一個胖子當(dāng)著我的面吹牛编饺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播次和,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼反肋,長吁一口氣:“原來是場噩夢啊……” “哼那伐!你這毒婦竟也來了踏施?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤罕邀,失蹤者是張志新(化名)和其女友劉穎畅形,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诉探,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡日熬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了肾胯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竖席。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖敬肚,靈堂內(nèi)的尸體忽然破棺而出毕荐,到底是詐尸還是另有隱情,我是刑警寧澤艳馒,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布憎亚,位于F島的核電站,受9級特大地震影響弄慰,放射性物質(zhì)發(fā)生泄漏第美。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一陆爽、第九天 我趴在偏房一處隱蔽的房頂上張望什往。 院中可真熱鬧,春花似錦慌闭、人聲如沸恶守。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔港。三九已至,卻和暖如春仔拟,著一層夾襖步出監(jiān)牢的瞬間衫樊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留科侈,地道東北人载佳。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像臀栈,于是被迫代替她去往敵國和親蔫慧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,777評論 25 707
  • 總有些事情會讓你在午夜驚醒,然后盟蚣,捂住胸口黍析,心痛的快要死掉,因為現(xiàn)實的一端過于疼痛屎开。推開房門的那一刻阐枣,我整個人都驚...
    煩客閱讀 352評論 0 0
  • 上班,路過公園,一陣香味飄過來,甜絲絲的,是桂花的香味,如果不是上班要來不及,我肯定會停車循香而去,可現(xiàn)在,我只有...
    曉曉的窩閱讀 1,235評論 3 5
  • 寓言故事一則 狐貍和樵夫 狐貍為躲避獵人們追趕而逃竄,恰巧遇見了一個樵夫奄抽,便請求讓他躲藏起來蔼两,樵夫叫狐 貍?cè)ニ男?..
    M_筱茱濼濼閱讀 125評論 0 0