在互聯網迅速發展的今天,程序員真的有點爛大街了,最近頻繁聽到朋友都工做了,又去轉行作開發的,去培訓機構培訓而後出來長時間找不到工做的。各類跨專業、工做後轉型。互聯網行業競爭愈來愈激烈的今天,高效的快速開發,穩固的基礎纔是從中取勝的關鍵。今天向Android開發者推薦一些開發的插件及其一些開發的技巧,只是我的的一些愚見,但願對你有所幫助。java
代碼的規範對於一個程序員的長遠發展是至關重要的,android的代碼規範其實和java是基本上同樣的,這裏推薦阿里巴巴java開發手冊,阿里還在不斷更新完善,感謝阿里爲業內人士作的巨大貢獻,這一小步,影響很大。若是全部人都按照這個規範,當你接手別人的項目的時候還在爲這個代碼塊是幹什麼的,項目的迭代去抓耳撓腮嗎???android
說到這裏,不少人應該都會比較熟悉JakeWharton大神貢獻的butterknife,相似的依賴注入還有androidannotations、Dagger 2,可是用這些真的好嗎???實際上是很影響性能的,這裏以butterknife的源碼來分析ios
ButterKnife.bind過程git
源碼看進去程序員
static void bind(@NonNull Object target, @NonNull Object source, @NonNull Finder finder) {
Class<?> targetClass = target.getClass();
try {
ViewBinder<Object> viewBinder = findViewBinderForClass(targetClass);
viewBinder.bind(finder, target, source);
} catch (Exception e) {
//省略異常處理
}
}複製代碼
再來看看另一個方法github
private static ViewBinder<Object> findViewBinderForClass(Class<?> cls)
throws IllegalAccessException, InstantiationException {
ViewBinder<Object> viewBinder = BINDERS.get(cls);
//先找緩存
if (viewBinder != null) {
return viewBinder;
}
//檢查下是否支持這個類
String clsName = cls.getName();
if (clsName.startsWith("android.") || clsName.startsWith("java.")) {
return NOP_VIEW_BINDER;
}
try {
//找到類名爲 Activity 的類名加 "$$ViewBinder" 的類,實例化,並返回
Class<?> viewBindingClass = Class.forName(clsName + "$$ViewBinder");
//noinspection unchecked
viewBinder = (ViewBinder<Object>) viewBindingClass.newInstance();
} catch (ClassNotFoundException e) {
//注意這裏支持了繼承關係
viewBinder = findViewBinderForClass(cls.getSuperclass());
}
//緩存 viewBinder
BINDERS.put(cls, viewBinder);
return viewBinder;
}複製代碼
看完源碼ButterKnife對性能有必定的影響,而且引入了更多的類和方法,增長了安裝包的大小。可是,對開發效率的提高也是顯而易見的,尤爲是配合AS插件的使用。如何取捨,徹底是由做爲開發者的你來決定了。其餘的幾個注入的第三方庫相似的,因此在這裏爲了避免影響性能,又避免寫findViewById,所以推薦LayoutCreator算法
安裝數據庫
方式一. 下載項目中的jar包,經過本地disk方式導入json
方式二. 在Android Studio的插件中心搜索LayoutCreator下載安裝android-studio
用法截圖
有了上面的LayoutCreator神器,再加上這個神器,估計差很少省去了不少coding的時間了,是否是感受終於有時間騰出來談個女友了呀!!!祝沒有女友的攻城獅們早日找到女友。。。
安裝
方式一. 下載項目中的jar包,經過本地disk方式導入
方式二. Preferences/Settings->Plugins->Browse repositories... 而後在搜索框輸入Android code Generator。
用法截圖
還在爲返回JSONObject格式的字符串而一個一個對着寫參數嗎???GsonFormat一個根據JSONObject格式的字符串,自動生成實體類參數。 之後寫實體類就是秒秒鐘的事!!!
安裝
方式一. 下載GsonFormat.jar包,經過本地disk方式導入
方式二. Android studio File->Settings..->Plugins–>Browse repositores..搜索GsonFormat,安裝插件,重啓android studio
用法截圖
安裝方式都有兩種,能夠參考上面進行安裝
設計師給咱們提供好了各類資源,每一個按鈕都要寫一個selector是否是很麻煩?這麼這個插件就爲解決這個問題而生,你只須要作的是告訴設計師們按照規範命名就行了,其餘一鍵搞定。
強烈推薦,幫助你在開發階段方便的檢測出內存泄露的問題,使用起來更簡單方便。
強大的讓全部人都認識
Android Parcelable code generator
在類中插入實現了Parcelable接口的代碼。
Android Material Design Icon Generator
將Material Design的圖標導入到程序中。
這是一個很是強大的圖片導入插件。它導入Android圖標與Material圖標的Drawable ,批量導入Drawable ,多源導入Drawable(即導入某張圖片各類dpi對應的圖片)
Android studio的插件還有不少不少,選擇一些經常使用的,別裝太多插件哦,要是你想要什麼功能的插件可留言,我爲你推薦
Android是開源的,所以也誕生了一批又一批的開源大牛,而後這些大牛寫了牛逼的開源庫,讓咱們今天的工做更簡單,在這裏想你們介紹一些經常使用的開源庫
okhttp
okhttp相關延伸:Fast-Android-Networking、okhttputils、NoHttp
retrofit 這是一個很高深的網絡請求,基於okhttp
如今主流的是這兩個,還有volley、xutil等就不在介紹了
參考刷新加載控件
其實爲我的不建議使用事件總線,由於代碼邏輯不清楚,後期迭代維護麻煩;觀察者獨有的,觀察者可能會形成接口的膨脹
AndroidSwipeLayout別人討厭各類仿ios什麼效果,程序員能夠寫着玩玩沒問題。仿iOS各類左右滑效果
circular-progress-button帶進度顯示的Button,讓操做更炫酷
ToggleButton狀態切換的 Button,相似 iOS,用 View 實現
AndPermission權限管理
AndroidUtilCode工具類大集合
注意事項
避免黃色警告
過期方法不要用
include的使用
merge的使用
viewstub的使用
避免佈局嵌套過深;簡單佈局linearlayout,複雜佈局relativelayout;有些效果多考慮自定義view是否能實現,別用view疊加實現
style的使用,減小代碼量
weight的合理使用
margain和padding合理比較進行選擇使用
最新的佈局方式ConstaintLayout的使用
避免沒必要要的渲染,可藉助第三方工具
注意事項
爲了提升UE,需考慮緩存、數據存儲優化、算法優化、JNI、邏輯優化、需求優化(後面會詳細述說優化相關)
代碼結果清晰,多方法,避免一個方法執行不少行代碼
避免警告;多作異常處理;判斷條件多考慮
注意事項
AndroidStudio的lint清除無用的資源
注意第三方引入的資源刪除時需注意(典型:某盟)
重點推薦:多coding,多看底層,知其然知其因此然