【威哥說】磨礪營靠什麼比別人優秀?不只僅是教學靠譜,老師靠譜,更重要的是我們在磨礪營作的都是真實的商業項目,由磨礪營自主研發的項目,今天咱們就來了解一下我們磨礪營IT教育的實訓項目《磨礪音樂》。android
【目標】首先咱們要先定一個小目標,來磨礪營學一批磨礪營自主研發的實戰商業項目。動動小手收藏轉發,讓更多人看到。程序員
【正文】1605期的第二個項目實戰已完結了,《磨礪音樂》APP正式與你們見面了,本項目中大量運用了經典的Fragment嵌套技術,界面風格走樸素簡約風,扁平化產品級設計,咱們在意每個細節的設計,咱們不隨便,由於咱們只想打造更好的產品。如下小編整理了一截圖,注意!睜大你的雙眼,不是開玩笑的: 下面整理一下本項目使用到的:數據庫
一、jsoup組件 用於抓取網絡音樂,分析網絡頁面返回的數據,你能夠理解一個網絡爬蟲工具,誰說沒有服務器就不能實如今線音樂功能,有了它,太讚了。 二、androidannotations組件 本項目全面支持UI組件及事件處理的註解方式實現,你會發現確實節省了好多代碼哇,也許你會有疑問,用註解不會影響性能嗎?NO,那是你太不瞭解androidannotations組件的強大功能了,它使用apt組件爲咱們的註解代碼自動生成了原生的代碼,性能?決對不是問題。 三、eventbus3.0組件 自從使用了eventbus組件實現事件傳遞,太TM的方便了,代碼簡潔不說,讓整個邏輯更加清晰可讀,固然,咱們也在項目中使用了傳統的接口回調,俗話說,不懂接口回調的程序員不是老司機,這個必需要用的,即便沒有eventbus,咱們同樣能夠完成,只不過有這麼好的組件,咱們爲啥不用勒,一個字,用! 四、design包 design包是android5.0 Lollipop 發佈的最具意義的一個版本,重要的原是Material Design的引入,咱們在項目中使用design包的TabLayout實現tab功能和側滑菜單,與Toolbar,DrawerLayout聯合使用,界面效率超棒的。 五、xutils3框架 國人寫的一個框架,共分爲4大模塊,網絡請求、數據庫、圖片緩存、組件註解,功能仍是很強大的,本項目利用這個組件來實現本地數據庫的功能,因爲其它功能模塊有更好的選擇,因此沒有使用到,按做者的介紹,數據庫功能能夠和著名的GreenDao相媲美,研究其源碼發現,數據緩存查詢功能確實強大,我能說是模仿GreenDao麼,但願xutils3的做者不要介意哈,向優秀者學習並靠近,自己就是一種優秀。 六、okhttp組件 本項目使用okhttp組件實現網絡數據請求功能,okhttp是當前最主流的網絡請求框架,在大多數項目中都在使用,其高度的可定製性是勝出的法寶,只是對於初學者來講okhttp須要本身來封裝貌似有點難度,但絲絕不影響咱們使用它,要知道磨礪營出來的學員,封裝個組件的能力,我說屢見不鮮的事,你可千萬不要以爲我在說大話,由於事實咱們就是這樣作的。 七、fresco圖片緩存組件 在上一個項目中咱們一樣使用到了fresco組件,當今Android世界最好用的圖片緩存組件,咱們能夠絕不吝嗇的這樣說,上次也給你們提到fresco是使用真正的三級緩存來實現的,兩級內存一級磁盤,下面咱們來解釋一下這個牛B的三級緩存: (1)Bitmap緩存 Bitmap緩存存儲Bitmap對象,這些Bitmap對象能夠馬上用來顯示或者用於後處理,在5.0如下系統,Bitmap緩存位於ashmem,這樣Bitmap對象的建立和釋放將不會引起GC,更少的GC會使你的APP運行得更加流暢。
5.0及其以上系統,相比之下,內存管理有了很大改進,因此Bitmap緩存直接位於Java的heap上。當應用在後臺運行時,該內存會被清空。緩存
(2)未解碼圖片的內存緩存 這個緩存存儲的是原始壓縮格式的圖片。從該緩存取到的圖片在使用以前,須要先進行解碼。若是有調整大小,旋轉,或者WebP編碼轉換工做須要完成,這些工做會在解碼以前進行。APP在後臺時,這個緩存一樣會被清空。 (3)和未解碼的內存緩存類似,文件緩存存儲的是未解碼的原始壓縮格式的圖片,在使用以前一樣須要通過解碼等處理。 八、banner組件 一個還不錯的實現圖片輪播的組件,一個小組件而已,用用更健康,就很少說了哈。 九、LrcView 用於實現歌詞加載的組件,咱們使用Jsoup從網絡上分析出歌詞,再用okhttp下載後交給LrcView組件就能夠了,用法也很簡單,其實我想說的話,前面如何弄到歌詞更是難題,說多了都是淚啊,有興趣的童鞋能夠單獨跟我交流交流吧,這裏就不細說了。 十、Vitamio組件 一個能夠實現大多數音頻視頻播放、流媒體播放的框架,國人企業的產品,固然咱們使用的是免費版的,用法和Android自帶的MediaPlayer大同小異。 其它小組件就一一介紹了。 項目總結: 本項目的特色是儘量的少用Activity組件,大量使用Fragment及其嵌套實現UI界面,緣由是播放器項目特殊性,在大多數界面上都要保留播放控制條,Fragment之間的嵌套也會出現各類問題,但都給咱們一一化解了,項目中成長了很多,最經典的一句話是:咱們把Fragment及其接口回調運用的淋漓盡致。還有就是各個界面的狀態同步問題,固然有了eventbus組件,一切的問題都不是問題了,在項目中咱們使用了Service實現了後臺播放功能,開啓服務與綁定服務結合使用的技巧,通知欄功能實現,下載,收藏,播放模式切換等,還有不少小功能實現。最後的感覺是:一個完整的項目開發,不只讓你懂得了怎麼運用知識,技巧和經驗的收穫纔是更大的。