Android快速開(kāi)發(fā)——一個(gè)星期內(nèi)開(kāi)發(fā)完成一個(gè)APP

一、背景

2017年3月份8號(hào)參加了公司某APP研發(fā)會(huì)議,任務(wù)周期是一個(gè)星期的時(shí)間,并且是接口和APP同時(shí)開(kāi)發(fā),通過(guò)會(huì)議了解到APP預(yù)計(jì)要開(kāi)發(fā)近百個(gè)頁(yè)面,這對(duì)我來(lái)說(shuō)是個(gè)幾乎不能完成的任務(wù),但是最終在規(guī)定時(shí)間內(nèi)完成了所有功能開(kāi)發(fā)。

二、快速的開(kāi)發(fā)APP

1.前期的準(zhǔn)備工作

在應(yīng)急APP開(kāi)發(fā)任務(wù)之前,有一段項(xiàng)目后不忙碌時(shí)間,在這期間,我看技術(shù)博客以及技術(shù)書(shū)籍,然后將所學(xué)習(xí)的知識(shí)進(jìn)行編寫(xiě)Demo,而這些Demo為我下面的快速開(kāi)發(fā)打下了基礎(chǔ)

2.關(guān)于開(kāi)發(fā)工具

了解你的工具,我使用的是android

studio來(lái)進(jìn)行android開(kāi)發(fā),了解和熟悉android sudio會(huì)大大提高自己的開(kāi)發(fā)效率。

2.1使用鍵盤(pán)快捷鍵更快

下面就簡(jiǎn)單列舉一些我在開(kāi)發(fā)中常常用到的快捷鍵:

?代碼提示

“Control + Space”可以在代碼任意地方調(diào)出代碼提示,通過(guò)Enter鍵可以完成提示的輸入。另外Tab鍵同樣也可以完成輸入,區(qū)別是它會(huì)將后面已經(jīng)輸入的提示全部刪掉,而Enter會(huì)保留。

“Control +

Shift + Space”提示了更加智能的代碼。

“Option + Enter”可以獲取代碼的修改提示,不用每次再用鼠標(biāo)去點(diǎn)擊出現(xiàn)錯(cuò)誤的小紅點(diǎn)。

例如:Log.i(TAG,"TEST");點(diǎn)擊Option+Enter可以快速的獲取代碼提示,創(chuàng)建Tag.

?快速提示

“ALT + Enter”當(dāng)你寫(xiě)完一行代碼時(shí),還差一個(gè)分號(hào)、換行,并格式化代碼,出現(xiàn)錯(cuò)誤,需要獲得錯(cuò)誤提示。

?快速定位代碼錯(cuò)誤位置

“F2”當(dāng)你的代碼出現(xiàn)錯(cuò)誤時(shí),可以按“F2”快速定位到錯(cuò)誤位置

?代碼格式化

“Ctrl+Alt+L”

?生成代碼

“Alt+Insert”當(dāng)你需要重載某個(gè)父類(lèi)方法或生成get、set方法

?其他

還有更多方面的快捷鍵請(qǐng)參考:

http://www.android-studio.org/index.php/docs/experience/142-androidstudio-shortcut-keys

2.2使用插件變得更有效率

?Translate

翻譯插件,自己英文不好,使用這個(gè)插件可以大大提升英文翻譯效率

?Android Studio Prettify

從布局文件中生成對(duì)View的聲明(不使用注解)

?GsonFormat

根據(jù)json數(shù)據(jù)格式返回生成相應(yīng)的實(shí)體類(lèi)

2.3使用Live Templates

Live Template是展示在代碼完成選項(xiàng)中的快捷方式,當(dāng)你選擇它時(shí),IDE就會(huì)插入一段代碼片段,并讓你在需要輸入?yún)?shù)的地方進(jìn)行后續(xù)輸入。

例如:“fbc”對(duì)應(yīng)findViewById、對(duì)象.for可以自動(dòng)生成for循環(huán)等

3.關(guān)于封裝

?基類(lèi)庫(kù)

采用是公司android開(kāi)發(fā)的基礎(chǔ)框架庫(kù),里面針對(duì)Activity、Dialog等組件進(jìn)行了封裝,使我們開(kāi)發(fā)效率大大提升。

?網(wǎng)絡(luò)請(qǐng)求庫(kù)

App中少不了要用到網(wǎng)絡(luò)請(qǐng)求,網(wǎng)上已經(jīng)有很多優(yōu)秀的網(wǎng)絡(luò)請(qǐng)求框架okhttp、asynchttp等,如果我們直接使用第一是如果要更改參數(shù)那么所有使用到地方都需要更改,第二是如果要跟換網(wǎng)絡(luò)請(qǐng)求框架也需要修改全部代碼,所以我針對(duì)網(wǎng)絡(luò)請(qǐng)求采用工廠模式進(jìn)行了二次封裝:

1.創(chuàng)建網(wǎng)絡(luò)請(qǐng)求及網(wǎng)絡(luò)請(qǐng)求回調(diào)接口

2.創(chuàng)建網(wǎng)絡(luò)請(qǐng)求實(shí)現(xiàn)類(lèi)

3.創(chuàng)建網(wǎng)絡(luò)請(qǐng)求工廠類(lèi)

通過(guò)這三步的封裝,我們后面的網(wǎng)絡(luò)調(diào)用就變得非常的另外,并且可是隨時(shí)更換網(wǎng)絡(luò)請(qǐng)求框架并且只需要在工廠類(lèi)替換網(wǎng)絡(luò)請(qǐng)求實(shí)現(xiàn)。

?圖片加載庫(kù)

圖片庫(kù)的封裝和網(wǎng)絡(luò)請(qǐng)求庫(kù)一樣的原理。

?數(shù)據(jù)庫(kù)操作封裝

數(shù)據(jù)庫(kù)我們采用的是GreenDao框架,在之前的開(kāi)發(fā)中使用GreenDao查詢(xún)一個(gè)數(shù)據(jù)集采用以下寫(xiě)法:

Queryquery=oaApplication.getDaoSession().getBaseListDao()

.queryBuilder().where(BaseListDao.Properties.CodeType.eq(strings[downcount]),BaseListDao.Properties.Rid.eq(baseInfos.get(i).getRid()))

.build();

List infos = query.list();

這樣寫(xiě)也比較方便,但是要返回不同類(lèi)型數(shù)據(jù)就要?jiǎng)?chuàng)建不同類(lèi)型的QueryBuilder,所以我對(duì)GreenDao采用泛型進(jìn)行了操作封裝:

1.創(chuàng)建數(shù)據(jù)庫(kù)操作接口類(lèi)

2.創(chuàng)建數(shù)據(jù)庫(kù)操作實(shí)現(xiàn)類(lèi)

3.創(chuàng)建數(shù)據(jù)庫(kù)操作工廠類(lèi)

經(jīng)過(guò)封裝之后請(qǐng)求網(wǎng)絡(luò)采用下面的寫(xiě)法:

Listinfos=DBManagerFactory.getDBManagerImpl().queryListAll(BaseList.class, "codeType =" + strings[downcount] +" and rid = " +baseInfos.get(i).getRid());

4.關(guān)于第三方庫(kù)

使用第三方庫(kù)能夠大大提高我們的開(kāi)發(fā)效率,每個(gè)人習(xí)慣的庫(kù)不一樣,下面就是我經(jīng)常使用的第三方庫(kù)

?網(wǎng)絡(luò)請(qǐng)求android-async-http

?數(shù)據(jù)庫(kù)greenDAO(建議使用3.0以上版本,使用注解生成對(duì)應(yīng)Dao類(lèi)非常方便)

?Json數(shù)據(jù)解析FastJason

?圖片加載Glide

5.關(guān)于布局

在APP開(kāi)發(fā)中還有一項(xiàng)重要的工作就是UI布局,要提高開(kāi)發(fā)效率,提高布局的效率也是重中之重。

?清晰標(biāo)注的設(shè)計(jì)圖

當(dāng)我們拿到UI設(shè)計(jì)圖,如果色值、大小都沒(méi)有明確的標(biāo)識(shí),那我們肯定是兩眼一抹黑,所以我們需要美工人員配合給我們的設(shè)計(jì)稿是有明確標(biāo)識(shí)的,這樣我們才能開(kāi)展下一步的工作。

?使用統(tǒng)一的Values資源屬性

一般來(lái)說(shuō)我們很多的組件的顏色和字體是有一定的共通性的,我們要提取這一部分屬性在我們的資源內(nèi)建立統(tǒng)一的屬性如color.xml、dimens.xml等,這樣如果一旦共性的屬性要更改我們只需要更改對(duì)應(yīng)資源屬性即可完成所有頁(yè)面的更改。

?使用樣式

每個(gè)頁(yè)面標(biāo)題欄的標(biāo)題基本會(huì)有一樣的字體大小、顏色、對(duì)齊方式、內(nèi)間距、外間距等,很多按鈕也都使用一致的背景、內(nèi)間距、文字顏色、文字大小、文字的對(duì)齊方式,這個(gè)時(shí)候我們?nèi)绻麨槊總€(gè)組件來(lái)進(jìn)行屬性的設(shè)置那么工作量極大,而且一旦屬性發(fā)生變動(dòng)那么對(duì)應(yīng)的每個(gè)組件都必須重新修改,這個(gè)時(shí)候我們定義成樣式,相同屬性的組件設(shè)置統(tǒng)一的樣式,這樣不僅大大提升布局的效率,也提高了后期UI變動(dòng)的方便性。

?layout

xml中使用include

在APP開(kāi)發(fā)中很多布局的部分內(nèi)容是重復(fù)的,例如每個(gè)頁(yè)面的標(biāo)題欄,為了頁(yè)面的復(fù)用,我們可以將標(biāo)題欄獨(dú)立成一個(gè)布局xml,然后使用include標(biāo)簽來(lái)使用它,如下:

?tools:attribute

在UI布局的時(shí)候,我們希望看到TextView在有文字時(shí)候的預(yù)覽情況,之前我是直接給Text賦值,但是這樣一旦你在代碼中忘記給Text賦值,那么你界面顯示就是測(cè)試值,使用'tools:something="value"'這個(gè)值會(huì)顯示在預(yù)覽時(shí)候,但是在軟件真正運(yùn)行的時(shí)候不會(huì)出現(xiàn)這個(gè)內(nèi)容:

1.在根布局中添加xmlns:tools=http://schemas.android.com/tools

2.在TextView中使用'tools:text="value"'屬性

?ExtractResource

比如你在布局文件或者代碼文件中直接寫(xiě)了某個(gè)String字符串或者某個(gè)dimen數(shù)值,而不是引用資源文件,這個(gè)時(shí)候我們可以選中那個(gè)值,然后按alt+enter鍵選擇Extract String/Dimension Resource輸入資源名稱(chēng),就自動(dòng)創(chuàng)建了資源文件。

6.關(guān)于代碼

?代碼復(fù)用

在開(kāi)發(fā)APP的過(guò)程很多獲取基本數(shù)據(jù)的代碼是相同的,為了提高開(kāi)發(fā)效率,我們將這部分代碼放到公共類(lèi)里面,這樣所有的地方都可以使用,實(shí)現(xiàn)了代碼復(fù)用。

?靈活的界面顯示

在APP的開(kāi)發(fā)過(guò)程中,每個(gè)功能都一個(gè)對(duì)應(yīng)的詳情頁(yè)面,如果每個(gè)詳情頁(yè)面都進(jìn)行單獨(dú)開(kāi)發(fā)意味著要多開(kāi)發(fā)幾十個(gè)頁(yè)面,這是時(shí)候我們和后端的同事進(jìn)行討論所有的詳情頁(yè)面采用統(tǒng)一的數(shù)據(jù)返回格式,將不同的布局風(fēng)格按照編號(hào)分類(lèi),這樣我們APP端只需要按照這些規(guī)則做一個(gè)共用的詳情頁(yè),根據(jù)不同的編號(hào)生成不同的布局,通過(guò)這個(gè)共用頁(yè)面讓我能夠在短時(shí)間內(nèi)完成APP的開(kāi)發(fā),同時(shí)將原本預(yù)計(jì)近百個(gè)頁(yè)面壓縮至60幾個(gè)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評(píng)論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,400評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,136評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,714評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,452評(píng)論 6 412
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,818評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評(píng)論 3 446
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,997評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,552評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,292評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,510評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,721評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,121評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,429評(píng)論 1 294
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,235評(píng)論 3 398
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,480評(píng)論 2 379

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,722評(píng)論 25 708
  • 今天去買(mǎi)10元錢(qián)的蘋(píng)果,稱(chēng)上差兩分錢(qián),大姨說(shuō)要給我換一個(gè)大的,我堅(jiān)持不用了。就給20元,等找錢(qián)。結(jié)果大姨多找我一塊...
    間腦開(kāi)發(fā)王宏彥閱讀 408評(píng)論 0 2
  • 我們應(yīng)該注意到,從數(shù)據(jù)顯示,中國(guó)的“認(rèn)知技能”數(shù)據(jù)是非常大的,甚至超出了許多國(guó)家的水平,比如世界上發(fā)達(dá)國(guó)家的水平,...
    60e738a353b4閱讀 282評(píng)論 0 0
  • 現(xiàn)在在地鐵里,身邊各種上班族的嘰嘰喳喳,下一站就到我的目的站了,回家的車(chē)站,這個(gè)月第三次回家了,有點(diǎn)累,工作不是很...
    a木閱讀 206評(píng)論 0 1
  • 早上家里6.30卸貨,當(dāng)我還在睡覺(jué)時(shí)候,一個(gè)關(guān)門(mén)的聲音把我叫醒。當(dāng)我起床的時(shí)候,猛的想起來(lái),今天卸集裝箱,然后去老...
    吳泡芙閱讀 203評(píng)論 0 0