準備轉行Android,做了一個 高仿的知乎日報客戶端 練手,目前完成了大部分基本功能,記錄一下開發過程中學習的資料(文中大部分資料鏈接均來自簡友 G軍仔 同學的這篇 好文)及踩過的坑,拿出來跟大家分享一下,要是能給大家帶來一些幫助,我深感榮幸。Android開發的路程遙遠又艱辛,希望尋到有理想有毅力的同學組個隊,一起學習,一起進步。
源碼鏈接
https://github.com/yiyibb/Zhihu
截圖
參考的項目
Elephant
這是一個非常優秀的項目,同樣是使用了如今的安卓開發三劍客的開源項目,參考了許多,特此感謝。MVP
這是一個可以快速實現快捷開發的開源庫,支持直接引用實現快速 Material Design + MVP + Rxjava + Retrofit + Okhttp + Glide 開發,其中核心庫封裝的非常好,有許多值得學習的地方,同樣了參考了許多,感謝 north2016 大神的分享。baseAdapter
這是鴻洋大神封裝的一個萬能adapter,我項目中對于多個類型item的recyclerView的實現便是使用的該庫,學習了很多,鴻洋大神的demo比較簡單,如果感覺理解困難的話可以看下AdapterDelelgates這個開源庫,鴻洋大神也有提到。
Rxjava 相關資料
這部分內容實在是一言難以概括,網上流傳的相關文章數不勝數,這里極力推薦一篇我認為最適合像我一樣的初學者刷上幾十遍的文章:
Retrofit2 相關資料
Retrofit是一個非常優秀的網絡請求庫(廢話誰不知道/(ㄒoㄒ)/~~),使用起來非常簡單,這里放上Retrofit的官網以及Jake Wharton
大神的視頻介紹。
MVP
關于MVP相關的學習看下面這篇文章就夠了,實戰可以參考谷歌官方放出的demo,在上文放出的兩個項目中也有很好的實現。
踩坑日記
資料放的差不多了,現在來說下踩過的坑,希望能夠幫助同樣遇到這些問題的人比我更快的解決問題。
Activity 切換 Fragment 時 toolbar 上的 item 顯示混亂
解決方法: 不要調用setSupportActionBar()
方法,toolbar 可以作為一個插件使用,通過findViewById()
方法獲取后設置相應的item的visible屬性即可實現切換 Fragment 設置不同的 item 項。
toolbar menu 上自定義 item 的實現
解決方法:說到自定義肯定第一時間想到自己寫個menu布局文件,調用toolbar的inflateMenu()
方法來加載,其實不用這么麻煩,MenuItem 有一個app:actionProviderClass
屬性,可以加載自定義的view。(但是寫下來好像也差不多麻煩 :-D)
日夜模式的切換
源碼中該功能只開了個頭,一開始參考的是簡友 D_clock愛吃蔥花 的 知乎和簡書的夜間模式實現套路這篇文章,但是后來放棄了,因為當內容較多時需要修改太多的xml文件,個人感覺有些麻煩,當然還是很佩服這樣的奇淫巧技。在此推薦另一位簡友 _SOLID 的文章 Android主題換膚 無縫切換 文中介紹了一種換膚框架的實現思路,個人認為寫的極為友好,文中的方法個人認為是一勞永逸的。
感謝
再次感謝文中提到的所有大神的慷慨分享,本人腹中墨水有限,似有千言萬語要說,奈何筆下只字片語,權當記錄學習的點滴,歡迎拍磚,共同學習。