首先感謝作者:weidi1989 的無私分享
轉來自:http://blog.csdn.net/way_ping_li/article/details/38963807點選打開連結
引言:
記得去年下半年有上傳一份代碼(超逼真仿雅虎天氣界面):http://download.csdn.net/detail/weidi1989/6312271
但那僅僅隻是一個界面,而且還有一些比較嚴重的bug,記得其中有一個是:那個可以換位置的ListView無法緩存item,導緻上下滾動時相當卡,性能可想而知了。以至于我就放棄繼續開發,今年這段時間忙裡偷閑,剛好有網友說要我繼續把功能做完,那個換位置的ListView可以去掉,于是乎拿出來又折騰了一下,雖然還是沒有解決這個問題(已經幹掉此功能
),但是繼續完善了一下。
雖然隻是完善,但也會遇到問題,其中兩個個人認為比較有意義的是:
①.ListView的多類型Item緩存與優化,不僅僅是ViewHolder以及ListView的Item布局性能優化。
②.ViewPager使用Fragment,包括動态添加删除以及緩存和優化。
這兩個問題,我會在接下來的文章中跟大家詳細講解(敬請期待
)。
由于本人時間和人力有限,應用未經過仔細完善測試,有bug也是在所難免,敬請諒解
先來看看效果圖(源碼滾動到文章底部):
源碼位址:
GitHub:https://github.com/way1989/WayHoo
OsChina:http://git.oschina.net/way/WayHoo
CSDN:http://download.csdn.net/detail/weidi1989/7847811
版本已更新至1.0.1
源碼位址:
GitHub:https://github.com/way1989/WayHoo
OsChina:http://git.oschina.net/way/WayHoo
本例使用了6個庫代碼和1個主工程代碼。
一、6個庫代碼如下圖所示:
其中
①.MenuDrawer、ViewPagerIndicator、ShowcaseView、SwipeBack都是Github上有名開源庫。
MenuDrawer 側邊欄菜單開源庫
ViewPagerIndicator 與ViewPaper一起實作Tab标簽,參考:http://blog.csdn.net/xiaanming/article/details/10766053
ShowcaseView 視圖效果顯示,可以高亮螢幕某一部分 或者 展示某些手勢示意圖,多用于APP的使用者指引界面
SwipeBack 滑動復原
②.PullToRefresh也是Github上有名的下拉重新整理開源庫,我做了一些小修改,主要是将雅虎下拉重新整理的效果添加到其中。如下圖所示:
③.weather-lib就是我之前和大家分享的小米天氣源,隻是加入了本地緩存,也不作多介紹,請參考:http://blog.csdn.net/way_ping_li/article/details/29669045。
二、主代碼結構如下圖所示:
其中:
com.way.adapter:所有擴充卡,包括ListView和ViewPager之類。
com.way.beans:所有Java Bean存放的地方。
com.way.common.util:所有工具類存放地方,比如網絡判斷、系統工具、時間工具等等。
com.way.db:即本工程使用的資料庫管理類,就一個檔案CityProvider.java,本人比較喜歡使用ContentProvider,确實感覺比直接操作資料庫來得友善,而且可以同時處理一個資料庫的多個表,隻是uri不同,switch case時多判斷一下即可。
com.way.fragment:本工程使用到的Fragment,隻有一個檔案。
com.way.ui.view:所有自定義View,其中值得一提的是TouchDispatchView,顧名思義是配置設定touch事件的View,由于本代碼使用的是scrollview作為下拉重新整理,ListView用來顯示資料,是以兩個View都需要touch事件,就需要一個父容器來配置設定他們的touch事件。
com.way.yahoo:所有activity所在包。
好了,今天就到此結束,下次和大家詳細分析以下3個方面:
①.主界面上滑變模糊,背景跟随滑動。
②.ListView和GridView中遇到多類型item的處理。
③.ViewPager使用fragment的緩存與優化。
謝謝!