天天看點

Android之高仿雅虎天氣

首先感謝作者:weidi1989 的無私分享

轉來自:http://blog.csdn.net/way_ping_li/article/details/38963807點選打開連結

引言:

記得去年下半年有上傳一份代碼(超逼真仿雅虎天氣界面):http://download.csdn.net/detail/weidi1989/6312271

但那僅僅隻是一個界面,而且還有一些比較嚴重的bug,記得其中有一個是:那個可以換位置的ListView無法緩存item,導緻上下滾動時相當卡,性能可想而知了。以至于我就放棄繼續開發,今年這段時間忙裡偷閑,剛好有網友說要我繼續把功能做完,那個換位置的ListView可以去掉,于是乎拿出來又折騰了一下,雖然還是沒有解決這個問題(已經幹掉此功能

Android之高仿雅虎天氣

),但是繼續完善了一下。

雖然隻是完善,但也會遇到問題,其中兩個個人認為比較有意義的是:

①.ListView的多類型Item緩存與優化,不僅僅是ViewHolder以及ListView的Item布局性能優化。

②.ViewPager使用Fragment,包括動态添加删除以及緩存和優化。

這兩個問題,我會在接下來的文章中跟大家詳細講解(敬請期待

Android之高仿雅虎天氣

)。

由于本人時間和人力有限,應用未經過仔細完善測試,有bug也是在所難免,敬請諒解

先來看看效果圖(源碼滾動到文章底部):

Android之高仿雅虎天氣
Android之高仿雅虎天氣
Android之高仿雅虎天氣
Android之高仿雅虎天氣
Android之高仿雅虎天氣
Android之高仿雅虎天氣

源碼位址:

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個庫代碼如下圖所示:

Android之高仿雅虎天氣

其中

①.MenuDrawer、ViewPagerIndicator、ShowcaseView、SwipeBack都是Github上有名開源庫。

MenuDrawer 側邊欄菜單開源庫

ViewPagerIndicator 與ViewPaper一起實作Tab标簽,參考:http://blog.csdn.net/xiaanming/article/details/10766053

ShowcaseView 視圖效果顯示,可以高亮螢幕某一部分 或者 展示某些手勢示意圖,多用于APP的使用者指引界面

SwipeBack  滑動復原

②.PullToRefresh也是Github上有名的下拉重新整理開源庫,我做了一些小修改,主要是将雅虎下拉重新整理的效果添加到其中。如下圖所示:

Android之高仿雅虎天氣

③.weather-lib就是我之前和大家分享的小米天氣源,隻是加入了本地緩存,也不作多介紹,請參考:http://blog.csdn.net/way_ping_li/article/details/29669045。

二、主代碼結構如下圖所示:

Android之高仿雅虎天氣

其中:

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的緩存與優化。

謝謝!