Android快速開發——一個星期內開發完成一個APP

一、背景

2017年3月份8號參加了公司某APP研發會議,任務周期是一個星期的時間,并且是接口和APP同時開發,通過會議了解到APP預計要開發近百個頁面,這對我來說是個幾乎不能完成的任務,但是最終在規定時間內完成了所有功能開發。

二、快速的開發APP

1.前期的準備工作

在應急APP開發任務之前,有一段項目后不忙碌時間,在這期間,我看技術博客以及技術書籍,然后將所學習的知識進行編寫Demo,而這些Demo為我下面的快速開發打下了基礎

2.關于開發工具

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

studio來進行android開發,了解和熟悉android sudio會大大提高自己的開發效率。

2.1使用鍵盤快捷鍵更快

下面就簡單列舉一些我在開發中常常用到的快捷鍵:

?代碼提示

“Control + Space”可以在代碼任意地方調出代碼提示,通過Enter鍵可以完成提示的輸入。另外Tab鍵同樣也可以完成輸入,區別是它會將后面已經輸入的提示全部刪掉,而Enter會保留。

“Control +

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

“Option + Enter”可以獲取代碼的修改提示,不用每次再用鼠標去點擊出現錯誤的小紅點。

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

?快速提示

“ALT + Enter”當你寫完一行代碼時,還差一個分號、換行,并格式化代碼,出現錯誤,需要獲得錯誤提示。

?快速定位代碼錯誤位置

“F2”當你的代碼出現錯誤時,可以按“F2”快速定位到錯誤位置

?代碼格式化

“Ctrl+Alt+L”

?生成代碼

“Alt+Insert”當你需要重載某個父類方法或生成get、set方法

?其他

還有更多方面的快捷鍵請參考:

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

2.2使用插件變得更有效率

?Translate

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

?Android Studio Prettify

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

?GsonFormat

根據json數據格式返回生成相應的實體類

2.3使用Live Templates

Live Template是展示在代碼完成選項中的快捷方式,當你選擇它時,IDE就會插入一段代碼片段,并讓你在需要輸入參數的地方進行后續輸入。

例如:“fbc”對應findViewById、對象.for可以自動生成for循環等

3.關于封裝

?基類庫

采用是公司android開發的基礎框架庫,里面針對Activity、Dialog等組件進行了封裝,使我們開發效率大大提升。

?網絡請求庫

App中少不了要用到網絡請求,網上已經有很多優秀的網絡請求框架okhttp、asynchttp等,如果我們直接使用第一是如果要更改參數那么所有使用到地方都需要更改,第二是如果要跟換網絡請求框架也需要修改全部代碼,所以我針對網絡請求采用工廠模式進行了二次封裝:

1.創建網絡請求及網絡請求回調接口

2.創建網絡請求實現類

3.創建網絡請求工廠類

通過這三步的封裝,我們后面的網絡調用就變得非常的另外,并且可是隨時更換網絡請求框架并且只需要在工廠類替換網絡請求實現。

?圖片加載庫

圖片庫的封裝和網絡請求庫一樣的原理。

?數據庫操作封裝

數據庫我們采用的是GreenDao框架,在之前的開發中使用GreenDao查詢一個數據集采用以下寫法:

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();

這樣寫也比較方便,但是要返回不同類型數據就要創建不同類型的QueryBuilder,所以我對GreenDao采用泛型進行了操作封裝:

1.創建數據庫操作接口類

2.創建數據庫操作實現類

3.創建數據庫操作工廠類

經過封裝之后請求網絡采用下面的寫法:

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

4.關于第三方庫

使用第三方庫能夠大大提高我們的開發效率,每個人習慣的庫不一樣,下面就是我經常使用的第三方庫

?網絡請求android-async-http

?數據庫greenDAO(建議使用3.0以上版本,使用注解生成對應Dao類非常方便)

?Json數據解析FastJason

?圖片加載Glide

5.關于布局

在APP開發中還有一項重要的工作就是UI布局,要提高開發效率,提高布局的效率也是重中之重。

?清晰標注的設計圖

當我們拿到UI設計圖,如果色值、大小都沒有明確的標識,那我們肯定是兩眼一抹黑,所以我們需要美工人員配合給我們的設計稿是有明確標識的,這樣我們才能開展下一步的工作。

?使用統一的Values資源屬性

一般來說我們很多的組件的顏色和字體是有一定的共通性的,我們要提取這一部分屬性在我們的資源內建立統一的屬性如color.xml、dimens.xml等,這樣如果一旦共性的屬性要更改我們只需要更改對應資源屬性即可完成所有頁面的更改。

?使用樣式

每個頁面標題欄的標題基本會有一樣的字體大小、顏色、對齊方式、內間距、外間距等,很多按鈕也都使用一致的背景、內間距、文字顏色、文字大小、文字的對齊方式,這個時候我們如果為每個組件來進行屬性的設置那么工作量極大,而且一旦屬性發生變動那么對應的每個組件都必須重新修改,這個時候我們定義成樣式,相同屬性的組件設置統一的樣式,這樣不僅大大提升布局的效率,也提高了后期UI變動的方便性。

?layout

xml中使用include

在APP開發中很多布局的部分內容是重復的,例如每個頁面的標題欄,為了頁面的復用,我們可以將標題欄獨立成一個布局xml,然后使用include標簽來使用它,如下:

?tools:attribute

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

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

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

?ExtractResource

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

6.關于代碼

?代碼復用

在開發APP的過程很多獲取基本數據的代碼是相同的,為了提高開發效率,我們將這部分代碼放到公共類里面,這樣所有的地方都可以使用,實現了代碼復用。

?靈活的界面顯示

在APP的開發過程中,每個功能都一個對應的詳情頁面,如果每個詳情頁面都進行單獨開發意味著要多開發幾十個頁面,這是時候我們和后端的同事進行討論所有的詳情頁面采用統一的數據返回格式,將不同的布局風格按照編號分類,這樣我們APP端只需要按照這些規則做一個共用的詳情頁,根據不同的編號生成不同的布局,通過這個共用頁面讓我能夠在短時間內完成APP的開發,同時將原本預計近百個頁面壓縮至60幾個。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,601評論 25 707
  • 今天去買10元錢的蘋果,稱上差兩分錢,大姨說要給我換一個大的,我堅持不用了。就給20元,等找錢。結果大姨多找我一塊...
    間腦開發王宏彥閱讀 408評論 0 2
  • 我們應該注意到,從數據顯示,中國的“認知技能”數據是非常大的,甚至超出了許多國家的水平,比如世界上發達國家的水平,...
    60e738a353b4閱讀 281評論 0 0
  • 現在在地鐵里,身邊各種上班族的嘰嘰喳喳,下一站就到我的目的站了,回家的車站,這個月第三次回家了,有點累,工作不是很...
    a木閱讀 205評論 0 1
  • 早上家里6.30卸貨,當我還在睡覺時候,一個關門的聲音把我叫醒。當我起床的時候,猛的想起來,今天卸集裝箱,然后去老...
    吳泡芙閱讀 201評論 0 0