一、背景
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幾個。