【威哥說】5月4日開班以來,1605期的學員們已經(jīng)進入的Android項目實戰(zhàn)階段了继薛,今天給大家?guī)淼氖堑谝粋€項目實戰(zhàn)《磨礪書店》,成品即將出爐诫隅,正在調試上線的最后階段,下面為大家介紹一下項目的詳情及使用技術帐偎,我們用事實說話逐纬,讓一切以抄襲偽裝項目實戰(zhàn)課程的靠邊站。
【正文】首先由小編上一組截圖肮街,強奸一下各種的眼睛风题,也歡迎提提建議,后續(xù)升級版本如果你的建議被采納會有精美禮品贈送哦:
下面來說明一下本應用中使用的技術介紹:
1.androidImageIndicator實現(xiàn)首面圖片輪播嫉父,當然還有其它圖片輪播組件沛硅,比如Banner,使用組件的好處當然不言而喻了绕辖,除了使用組件摇肌,自己來實現(xiàn)也得會,可以使用ViewPager+Handler+Thread仪际,我們可不想做個只會用組件的新手围小,你知道懂原理,用組件才更放心树碱。
2肯适、數(shù)據(jù)分頁與刷新
在本項目中,我們采用了PullToRefresh和google自帶的SwipeRefreshLayout組件成榜,使用SwipeRefreshLayout來加載新數(shù)據(jù)框舔,PullToRefresh則實現(xiàn)分頁顯示數(shù)據(jù),各用所長赎婚。當然一樣的道理刘绣,拋開這些組件化,我們可以為列表添加頭部和底部挣输,監(jiān)聽滾動事件的方式實現(xiàn)自定義的數(shù)據(jù)刷新纬凤,我們一樣可以做到。
3撩嚼、后臺服務器網(wǎng)絡請求
課程中停士,我們講解了很多的網(wǎng)絡請求框架:Google的volley適合細粒度的網(wǎng)絡請求,asyncHttp完丽,基apache httpClient的封裝庫向瓷,可惜httpClient已經(jīng)Android中被廢棄,asyncHttp的作者也已不再更新舰涌,OKHttp猖任,是目前使用較多的請求組件,與picasso出自同門瓷耙,還有其它朱躺,不一一介紹了刁赖,沒有框架怎么辦?我們也可以自己封裝httpUrlConnection的方式實現(xiàn)长搀。
4宇弛、網(wǎng)絡請求數(shù)據(jù)處理
網(wǎng)絡請求后返回的數(shù)據(jù)格式通常有兩種:XML和JSON,我們可以使用PULL實現(xiàn)XML的解析源请,效率高枪芒,性能好,優(yōu)于SAX谁尸,在移動端更是優(yōu)于基于樹結構的DOM舅踪、JDOM、DOM4J良蛮;JSON數(shù)據(jù)我們使用GSON和Android3.0以后支持的JsonReader實現(xiàn)抽碌,GSON適合一些簡單的數(shù)據(jù)轉換,很方便决瞳,缺點是在處理一些復雜的JSON數(shù)據(jù)有點力不從心货徙,此時我們將使用JsonReader實現(xiàn)解析,它可以更好的控制每個元素的解析皮胡。
5痴颊、實現(xiàn)圓角圖片與圖片緩存
在項目中使用圓角圖片是目前項目開發(fā)非常常見的,我們在項目使用了android-shape-imageview來實現(xiàn)屡贺,比如個人頭像蠢棱,但其它圖書的資源圖片考慮到緩存來提高加載性能,我們使用了當今為止最為牛X的facebook出品的fresco框架烹笔,其擁有三級緩存的實現(xiàn)是迄今為止傳統(tǒng)二級緩存實現(xiàn)無法比擬的,處理圓角圖片也很簡單抛丽,漸近式加載JPG圖片谤职,GIF支持等其它圖片緩存框架有的統(tǒng)統(tǒng)都有,人家沒有的fresco也有亿鲜,總之允蜈,牛B就是了。
在課程中蒿柳,當然我們也介紹了ImageLoader饶套,一個古老的圖片緩存組件,Picasso垒探,Glide等妓蛮,這些雖然只有二級緩存,但在一些中小項目中使用也已足夠圾叼,也是很強大的蛤克。誰說我們只會用框架捺癞,我們可以使用LRU算法實現(xiàn)自己的緩存框架,比如實現(xiàn)數(shù)據(jù)的緩存构挤,內存+磁盤髓介,或數(shù)據(jù)庫緩存,我們的武器有很多筋现,選擇用什么唐础,我們心知杜明。
6矾飞、支付功能
本項目中實現(xiàn)了支付寶和微信兩大支付平臺一膨,由于兩大支付平臺不支持個人用戶,我們借助了第三方平臺實現(xiàn)支付凰慈,在實現(xiàn)微信支付時汞幢,也用到如何利用程序自帶支付插件安裝的功能,第一微谓,避免了在線下載浪費用戶流量森篷,第二,由于支付插件是使用的是第三方APK文件豺型,這樣在發(fā)布應用上線時容易被安全類應用掃描到插件仲智,此時安全應用會提醒用戶此應用是個攜帶插件的應用,為了避免這個問題給用戶帶來不必要的困擾姻氨,我們把插件重命名為.db文件钓辆,在用戶使用到支付功能時,再把.db文件寫入用戶的sdcard還原apk肴焊,再執(zhí)行插件安裝來解決這個問題前联,由于篇幅原因,想詳細了解的童鞋可以留下QQ與威哥或磨礪營的講師交流哦娶眷。
7似嗤、自定義組件
本應用中商品詳情界面的實現(xiàn)里,由于界面展示的內容比較復雜届宠,需要嵌套各種組件烁落,而組件之間相同的事件處理會發(fā)生沖突,此時我們要重寫組件的事件處理來解決沖突問題豌注,以下方法在子組件上重寫伤塌,實現(xiàn)滾動條事件攔截處理:
重寫 onTouchEvent():
//事件處理由父控件處理
requestDisallowInterceptTouchEvent(false);
//事件處理由子控件處理
requestDisallowInterceptTouchEvent(true);
8、抽象了統(tǒng)一在Adapter中實現(xiàn)的ViewHolder類轧铁,達到復用
9每聪、對于第三方組件或框架的使用,把它們封裝起來,在實現(xiàn)功能時就可以避免在任何代碼中直接訪問組件的依賴代碼熊痴,這樣的好處是他爸,在替換該組件或框架時,利于維護果善,否則需要修改所有直接調用的代碼诊笤。
10、還有一些小功能的實現(xiàn):
<1>手機驗證碼注冊
<2>顯示隱藏密碼
<3>更新頭像裁剪上傳
<4>統(tǒng)一處理程序退出
<5>自定義導航欄
<6>購物車編輯時布局的變換實現(xiàn)方案(兩個adapter加載不同的布局實現(xiàn)替換)
<7>一次登錄后保存登錄狀態(tài)自已實現(xiàn):可以在第一次通過網(wǎng)絡請求登錄后巾陕,把用戶信息保存在SharedPreferences中讨跟,下次無需再登錄直接獲取用戶信息。
好了鄙煤,今天的文章就給大家總結項目中使用到的技術及解決方案晾匠,還有一些小小的處理細節(jié),比如布局優(yōu)化梯刚,如何合理減少嵌套等就不一一列舉了凉馆,這些細節(jié)你只有在正在開發(fā)這個項目時才會真正的深刻體會,這就是項目經(jīng)驗的積累亡资。而在真正開發(fā)項目中遇到的各種疑難雜癥澜共,才是真正的長姿勢,這些锥腻,你永遠不可能在知識點的學習中掌握透徹嗦董。
更多內容關注微信公眾號mjw-java或訪問www.moliying.com