首頁 收藏 QQ群
 網(wǎng)站導航

ZNDS智能電視網(wǎng) 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 14680|回復: 0
上一主題 下一主題
[教程]

android listview拖動和gridview拖動

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2013-8-28 16:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1493997關于ListView拖拽移動位置,想必大家并不陌生,比較不錯的軟件都用到如此功能了.如:搜狐,網(wǎng)易,百度等,但是相比來說還是百度的用戶體驗較好,不偏心了,下面看幾個示例:     [color=rgb(248,] view plain這個方法的作用很簡單:當我們摁下的如果是可拖拽的圖標,那么進行初始化該Item的映像試圖.而在這里如果大家對WindowManager和WindowManager.LayoutParams不熟悉的朋友先去參考下這篇文章,要對WindowManager有一定的了解,簡單的會應用.接下來我們看onTouchEvent事件:   
view plain簡單說明:首先在Touch中,我們要進行判斷,是否點擊的是拖動圖標,如果是的話,那么對ACTION_MOVE and ACTION_UP相應事件進行處理,并且返回true or false.作用:取消ListView自身的Touch事件.如果不是的話,執(zhí)行ListView 本身的Touch事件.大致就介紹這么多,具體的實現(xiàn),還是大家看源碼吧,我注釋的還算清晰,只要大家仔細看的話,一定可以掌握的,為什么這么說呢,技術只有在掌握了情況下才可以進行拓展.對了,提醒大家要理解這三句話:   
getRawX()和getRawY():獲得的是相對屏幕的位置.   
   
getX()和getY():獲得的永遠是相對view的觸摸位置 坐標(這兩個值不會超過view的長度和寬度)。   
   
getLeft , getTop, getBOTTom,getRight, 這個指的是該控件相對于父控件的距離.
   
源碼:   
   
   
view plain下面我說下適配器:   
   
view plain這里不過多解釋了,相信大家都看的明白.如果疑問請留言.展示下運行效果:  4 天前 上傳   
效果看起來還行吧,如果覺得不錯的話,記得要贊一個哦.   
下面我們接著修改,模擬百度嘛,誰讓百度這么牛叉呢.思路:點中拖拉圖標的時候,每次移動只要dragPosition發(fā)生改變,也就是我移動到了下一個位置,那么此時我就進行交換執(zhí)行update.并且除了第一次移動外,在每次交換后要除去映射源的顯示,這樣用戶覺得這里的空位就是就是為我準備的,比較人性化.實現(xiàn)起來并不復雜,前提是你得掌握上面的操作.源碼如下;   
view plain因為我們要時時交換位置,所以將原先的拖動方法onDrop方法移動到onChange中.具體的還是看源碼吧.   
另外的就是對適配器的修改,因為你要對特殊的item進行隱藏之類的操作,這些代碼我就不寫了,我會將案例上傳網(wǎng)上,不懂的可以下載源碼.好了還是我們來觀看下效果吧.  [color=rgb(248,] view plain相信大家只要ListView拖拽弄白后,這個GridView也會輕易弄出來,其實拖拽就是對坐標的考察。向大家展示一下效果:  4 天前 上傳   
但是有個不足的地方,網(wǎng)上一些例子都是長按可以拖拽,而點擊則執(zhí)行點擊事件.其實實現(xiàn)起來也不是很復雜,可是在實現(xiàn)的過程中,遇到了詭異糾結的問題,郁悶了一天,結果目前先放棄,以后哪天在搞搞吧.糾結的問題就是錯位.我說下我的思路:首先,我們在自定義GridView中創(chuàng)建一個控制是否可以Touch拖拽的變量,而這個變量的值我們通過對GridView的setOnItemClickListener和setOnItemLongClickListener來獲取,如:   
view plain這樣我們就實現(xiàn)了長按可以拖拽的效果了,可是遇到個變態(tài)的問題,不過這個思路沒有錯,肯定可以實現(xiàn).   
就先說到這里,其實通過這個例子,我們還可以拓展實現(xiàn)ListView上滑動的時候,到達Title時,Title停留在頂部,當下一個Titile滑動到這里的時候,那么代替前面那個TItle.網(wǎng)上有寫應該就是這么搞的,具體實現(xiàn)不知道,不過這種方案可以實現(xiàn),有時間接著續(xù).   
   

上一篇:Android軟件開發(fā)之EditText 詳解(八)
下一篇:第二十講:Content Provider 使用入門
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號 )

網(wǎng)絡信息服務信用承諾書 | 增值電信業(yè)務經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號

GMT+8, 2024-12-23 00:53 , Processed in 0.058649 second(s), 13 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表