android開發(fā)之橫向滾動/豎向滾動的ListView(固定列頭)
由于項目需要,我們需要一個可以橫向滾動的,又可以豎向滾動的 表格。而且又要考慮大數(shù)據(jù)量(行)的展示視圖。經(jīng)過幾天的研究終于搞定,做了一個演示。貼圖如下:
好吧。讓我們看思路是什么樣的:
1. 上下滾動直接使用 listView來實現(xiàn)。
2. 左右滾動使用HorizontalScrollView,來處理滾動。我寫一個類MyHScrollView繼承 自它。
2.1 . ListView里的每行(row)分為 兩部分,不滾動的和可滾動的區(qū)域。比如本demo的第一列,就是靜態(tài)的。而后面的所有列都是可以滾動的。
2.2. 我不想自己計算滾動的距離,因為還要處理越界,坐標(biāo)等等。于是我使用 OnTouch事件來處理。于是我們必須搞懂OnTouch的運(yùn)行機(jī)制。了解 請google it.
2.3. 列頭 (顯示列名的那一行)是固定的,不會上下滾動 。但可以左右滾動。而且它在左右滾動時,所有的 數(shù)據(jù)行(row) ,都要與其一起左右滾動。那么我們需要監(jiān)聽 列頭 (控件)的滾動變化消息(事件),并將消息廣播給所有的 數(shù)據(jù)行。這些數(shù)據(jù)行收到消息后,調(diào)整自己的滾動條位置以保持和 列頭 的滾動距離一致。
3. 那么整個流程基本是這樣的。
3.1, 捕獲 列頭(容器控件,包含固定和可滾動控件)的 onTouch事件(拖動事件),不處理。而分發(fā)給 “列頭里的 可滾動部分的控件”,該控件是一個HorizontalScrollView的 子類, 當(dāng)它收到這些 拖動事件時,就產(chǎn)生了固定的效果
3.2. 捕獲 數(shù)據(jù)行 區(qū) 的控件(該控件其實就是ListView控件 )的OnTouch事件,不處理,同樣分發(fā)給 “列頭里的 可滾動部分的控件”。 這兩步,就完成了一個小效果,點擊表 格的頭部和體部都能移動(滾動)行。
3.3. 我寫了一個 HorizontalScrollView的子類,重載 onScrollChanged 方法,該方法在 滾動之后執(zhí)行,相當(dāng)于“滾動后的事件”,我寫了一個觀察者(設(shè)計模式)的類。每次 滾動后,都通知給 觀察者。觀察者再通知給它的訂閱者(那些需要同時滾動的行里面的 滾動控件)。
3.4. 當(dāng)ListView創(chuàng)建行時,讓這些行都訂閱 上一步 的觀察者。當(dāng) 收到消息后,調(diào)整自身的滾動條位置以保持和 列頭 的滾動條位置一致。
代碼比較多,就不貼了。提供代碼下載。
- Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列)
- 詳解Android使GridView橫向水平滾動的實現(xiàn)方式
- Android使用GridView實現(xiàn)橫向滾動效果
- Android開發(fā)實現(xiàn)橫向列表GridView橫向滾動的方法【附源碼下載】
- Android GridView實現(xiàn)橫向列表水平滾動
- Android自定義ViewGroup實現(xiàn)可滾動的橫向布局(2)
- Android實現(xiàn)自定義的彈幕效果
- 實例解析如何在Android應(yīng)用中實現(xiàn)彈幕動畫效果
- Android 實現(xiàn)仿網(wǎng)絡(luò)直播彈幕功能詳解及實例
- Android實現(xiàn)橫向無限循環(huán)滾動的單行彈幕效果
相關(guān)文章
Android 使用 Path 實現(xiàn)搜索動態(tài)加載動畫效果
這篇文章主要介紹了Android 使用 Path 實現(xiàn)搜索動態(tài)加載動畫效果,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-08-08
Android 通過網(wǎng)絡(luò)圖片路徑查看圖片實例詳解
這篇文章主要介紹了Android 通過網(wǎng)絡(luò)圖片路徑查看圖片實例詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06
React Native中Android物理back鍵按兩次返回鍵即退出應(yīng)用
這篇文章主要給大家介紹了關(guān)于React Native中Android物理back鍵按兩次返回鍵即退出應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
RecyclerView+CardView實現(xiàn)橫向卡片式滑動效果
這篇文章主要為大家詳細(xì)介紹了RecyclerView+CardView實現(xiàn)橫向卡片式滑動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
Android自定義DataTimePicker日期時間選擇器使用詳解
這篇文章主要為大家詳細(xì)介紹了Android自定義DataTimePicker日期時間選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-09-09

