我們Team 專案中需要使用橫向滑動多屏的效果,主要是因為看到qq瀏覽器主介面使用該效果感覺很好。開始採用了ViewFlipper結合手勢,可是沒有拖拽的效果,後來參照了以下連結開發出來了:
1. 在flipper中如何?手動拖拽的效果?
這位和我們一樣遇到同樣的問題
2. android: how to create different “screens” and nav between
them using touch-and-drag?
There are no widgets built into Android to do this. You can look at the source code of the existing home screen to see how it does it, or use ViewFlipper
and
the new gesture system to attempt to emulate it.
這個給了我們啟發,看launcher源碼不就可以了嗎
3.將android
launcher2匯入eclipse中運行
4.android launcher源碼分析
5.android workspace分析
launcher2中關於滑動多屏的代碼主要在 workspace類中,不過它裡面還包含了拖拽、壁紙設定、appwidget、檔案夾、捷徑、應用列表控制等,代碼太多有1500多行,把那些無關的代碼去掉,杯具啊還是沒有成功啊。不過程式原理是清楚了,就是自訂一個布局,所有的子view大小是布局大小,然後按順序橫向擴充,這時候加上捲軸的配合,就達到效果了,再加上划過一半或速度超過特定值,就重繪下個子view,基本就OK了。可惜啊,就不是沒成功,不過有下位仁兄的協助:
最近做的一個仿launch橫向滑動多屏的DEMO ,可惜該論壇沒積分沒法下載,還好csdn資源裡也有 http://download.csdn.net/download/fhy_2008/3692852
這個下載的項目直接可以運行,比較launcher2代碼,主要是觸摸事件處理不同,不知道是不是和那位仁兄看的版本不同,反正可以用了,以後再研究吧。我們代碼在這個基礎上做了一些改良,就先用起來了。
我們團隊商量決定給android社區做點貢獻,在google code 開了一個項目 tfdroid http://code.google.com/p/tfdroid/,該項目主要是提供android進階控制項,橫向滑動多屏就是提供的第一個控制項,希望有興趣的朋友能加入,大家共同為社區做貢獻。
如果需要橫向滑動多屏請到 tfdroid http://code.google.com/p/tfdroid/,多多支援開源社區。效果如下: