編輯:關於Android編程
由於項目需要,我們需要一個可以橫向滾動的,又可以豎向滾動的 表格。而且又要考慮大數據量(行)的展示視圖。經過幾天的研究終於搞定,做了一個演示。貼圖如下:
好吧。讓我們看思路是什麼樣的:
1. 上下滾動直接使用 listView來實現。
2. 左右滾動使用HorizontalScrollView,來處理滾動。我寫一個類MyHScrollView繼承 自它。
2.1 . ListView裡的每行(row)分為 兩部分,不滾動的和可滾動的區域。比如本demo的第一列,就是靜態的。而後面的所有列都是可以滾動的。
2.2. 我不想自己計算滾動的距離,因為還要處理越界,坐標等等。於是我使用 OnTouch事件來處理。於是我們必須搞懂OnTouch的運行機制。了解 請google it.
2.3. 列頭 (顯示列名的那一行)是固定的,不會上下滾動 。但可以左右滾動。而且它在左右滾動時,所有的 數據行(row) ,都要與其一起左右滾動。那麼我們需要監聽 列頭 (控件)的滾動變化消息(事件),並將消息廣播給所有的 數據行。這些數據行收到消息後,調整自己的滾動條位置以保持和 列頭 的滾動距離一致。
3. 那麼整個流程基本是這樣的。
3.1, 捕獲 列頭(容器控件,包含固定和可滾動控件)的 onTouch事件(拖動事件),不處理。而分發給 “列頭裡的 可滾動部分的控件”,該控件是一個HorizontalScrollView的 子類, 當它收到這些 拖動事件時,就產生了固定的效果
3.2. 捕獲 數據行 區 的控件(該控件其實就是ListView控件 )的OnTouch事件,不處理,同樣分發給 “列頭裡的 可滾動部分的控件”。 這兩步,就完成了一個小效果,點擊表 格的頭部和體部都能移動(滾動)行。
3.3. 我寫了一個 HorizontalScrollView的子類,重載 onScrollChanged 方法,該方法在 滾動之後執行,相當於“滾動後的事件”,我寫了一個觀察者(設計模式)的類。每次 滾動後,都通知給 觀察者。觀察者再通知給它的訂閱者(那些需要同時滾動的行裡面的 滾動控件)。
3.4. 當ListView創建行時,讓這些行都訂閱 上一步 的觀察者。當 收到消息後,調整自身的滾動條位置以保持和 列頭 的滾動條位置一致。
代碼比較多,就不貼了。提供代碼下載。
源代碼下載。
前幾個月剛接觸Android的時候做了一個小項目,其中也用到了類似刮刮樂的效果,現在把代碼貼出來 首先要做一個類似橡皮擦的東西吧,然後才能
這個圖片異步加載並緩存的類已經被很多開發者所使用,是最常用的幾個開源庫之一,主流的應用,隨便反編譯幾個火的項目,都可以見到它的身影。可是有的人並不知道如何去使用這庫如何進
目前,手機的更新換代實在太快,安卓和蘋果占據了手機市場的絕大部分份額。作為手機發燒友,第一次使用蘋果的用戶怎樣才能將數據遷移到蘋果呢。或許你知道怎麼轉移通訊
package com.example.baidulocdemo_2;import com.baidu.location.BDLocationListener;impor