毫無疑問,開發一款自己的 App 對于初學者來說,無論從技術學習,還是找工作(或者裝 x),都是一大利器。那么如何才能快速上手,開發一款屬于自己的 app。本篇文章僅以自己的一些經驗給更多的 Android 新手一些建議。
在講如何開發一款 app 之前,先說下一定要避免的一些誤區。
借鑒與copy
表面與原理
效果與深度
(1)借鑒是為了學習
作為一名 Android 開發新手,在學習開發一款自己的 app 之前,參考一些大牛的項目,進行借鑒與參考是一個很好的捷徑。
然而有些新手上手就開始擼代碼,看著一臉懵逼的代碼,不明所以,想著不管三七二十一,敲著敲著就明白了。結果,最后一出 bug 就懵逼了,絲毫不理解項目的結構與框架,更不提其中的技術難點。
所以不要盲目地 copy,磨刀不誤砍柴工,要像看源碼一樣學習項目。先理清項目中的結構,使用的框架,每個類的功能,以及使用到的技術點,庖丁解牛,逐個拆分學習,化為一個個的技術問題,這樣才能最終轉化為自己的知識。
(2)從表面深入原理
針對具體的技術實現,不要僅僅以實現為目的,更不要僅僅因為實現了一些炫酷的 UI 效果而沾沾自喜。
對于一些技術,要知其然,更要知其所以然。比如:進程間通信的實現方式 AIDL,可能照著一些模板就可以實現,達到目的。再比如說:RecyclerView 或 ListView,按照一定的方法就可以快速實現列表布局。
然而這些實現不僅在一個項目或一處使用,而是頻繁高發的實現,將來也更是工作或面試中會遇到的。所以我們要透過表面學習原理,在開發一款app 的同時,通過這種方式激勵自己加深對技術的理解與實際應用。
比如,針對 AIDL 理解 binder 機制的實現,更進一步理解 android 中的進程間通信方式。針對 RecyclerView 或 ListView,理解復用機制以及如何定制化實現一些特殊的效果,加深我們自己的技術深度。
(3)不盲目追求效果
Android 開發的樂趣在于可以自己實現 app 的開發,用技術創造體驗。
然而正是這種樂趣可能會導致一些新手盲目注重UI實現效果,而忽略自身的技術學習。有時候技術學習與效果并不沖突,然而在自己獨立開發app,學習技術的過程中,可以適當較少對 UI 效果的追求,專注于對技術的追求與學習。
當然完美主義者(強迫癥)會不知覺地傾斜,但也請保持平衡。
在進行開發之前,我們要先進行足夠的準備工作,這樣才能事半功倍。
通常而言,新手在開發第一款 app 都是來自于借鑒,站在巨人的肩膀上進行學習,那么如何選擇一款自己想做、技術難度適當、干貨較多的app?
選擇參照 app
先選擇自己想做的類型,比如:播放器,新聞類等,一些適合新手開發的 app。然后在 Github 中搜索(一定要學會使用 Github)。
了解當前的流行技術框架,選擇自己想學的一些框架,篩選出使用這些框架的 app。
從滿足以上需求的 app 中找出一些star較多的項目,因為群眾的眼睛是雪亮的,這代表該項目是有可取之處的。
先大致了解下項目結構,不要盲目選一些效果炫酷的實現。要根據自己的技術能力選擇,初學者不要選擇太過復雜的,要循序漸進,才能事半功倍。
開發前奏
選擇好了一款或多款參照 app 后,那么就要開始全面了解這款 app。
項目結構:了解整個項目的結構,各個功能模塊,以及使用的框架。一般項目結構都會按照如下結構展開。
框架使用:了解整個項目使用的框架,然后學習該框架的使用。先看相關文章,了解基礎使用,然后了解原理,最后基于自己的項目進行封裝,這樣會方便后續快速功能實現。
關于具體開發,僅介紹一些通用的東西,供大家參考。
項目構建 :一個優秀的 Android 應用從建項目開始http://www.jianshu.com/p/d9e4ddd1c530.創建項目的一些規范。
工具類:AndroidUtilCodehttps://github.com/Blankj/AndroidUtilCode,所有你想用的工具類,都可以從中抽取。
基類:構建項目中基類,如 Activity,Fragment 等,可以參考網上的一些實現,但是大而全不一定好,適合自己的才是最好的。
四、個人經驗
(1)動機
作為一個 Android 新手,我也是在今年2月份才開始想學習做一款 app,增加自己各方面的能力。
在剛開始,想學習一些流行框架的使用,如 Retrofit,RxJava,Glide,EventBus 以及 MVP 模式。
在構思整個項目的時候,想的大而全,想實現太多的功能,而然做到最后只實現了新聞瀏覽以及圖片瀏覽的功能,雖然項目不完整,但是仍然學到了不少東西。
(2)過程
因為實現的功能比較簡單,整個項目的周期大概 20 多天左右。其實開發周期也就 10 多天,在前 10 天左右一直在學習了解各個框架的使用及原理。
Read the fucking source code,這個過程雖然很枯燥,不過也是一個積累與沉淀的過程。
從我的博客就可以看出我在準備這個項目時的學習歷程。博客寫作真的是學習的一個很好方式,可以將很多東西變成自己的,不再留于表面。
RxJava學習過程
手把手教你使用 RxJava 2.0(一)
手把手教你使用 RxJava 2.0(二)
手把手教你使用 RxJava 2.0(三)
Retrofit學習過程
Retrofit配置詳解及封裝,讓你的網絡請求更簡單
Retrofit+RxJava網絡請求異常處理
EventBus學習過程
關于EventBus,從使用到解析(上)
關于EventBus,從使用到解析(下)
MVP模式學習過程
Android MVP 的簡單介紹與使用
具體技術解決過程
Android 之仿嗶哩嗶哩客戶端首頁+抽屜式導航
類似支付寶首頁——RecycleView 多布局結構實現
類似支付寶應用管理界面——RecycleView+ItemTouchHelper 實現拖拽滑動
ViewPager+TabLayout+Fragment 懶加載機制完全解析
邊做邊寫,一路下來,收獲還是頗豐,小伙伴們可以在暑假試一試,很有效。
(3)結果
最終完成的項目在現在看來很 low了,不過確實是一個很好的開端。下面展示下具體實現的效果,紀念下我的第一款 app。
版權:【注明為本站原創的文章,轉載請注明出處與原文地址!本站部分轉載文章能找到原作者的我們都會注明,若文章涉及版權請發至郵箱:[email protected],我們以便及時處理,可支付稿費。向本站投稿或需要本站向貴司網站定期免費投稿請加QQ:1175062249】 更多信息請關注微信:1175062249
Copyright © 2013-2021 昆明君創網絡 版權所有.未經許可,不可拷貝或鏡像 。備案號:滇ICP備19009793號-5 網站地圖
友情鏈接