源碼簡介

本例子是一個長按GridView的item,然后將其拖拽其他item上面,使得GridView的item發生交換,比較典型的就是我們的Launcher,網上有很多關于GridView的拖動的Demo,但是大部分都是相同的,而且存在一些Bug,而且大部分都是點擊GridView的item然后進行拖動,或者item之間不進行實時交換,今天給大家更加詳細的介紹GridView拖拽,并且將Demo做的更完美,
實現思路:
1、根據手指按下的X,Y坐標來獲取我們在GridView上面點擊的item
2、手指按下的時候使用Handler和Runnable來實現一個定時器,假如定時時間為1000毫秒,在1000毫秒內,如果手指抬起了移除定時器,沒有抬起并且手指點擊在GridView的item所在的區域,則表示我們長按了GridView的item
3、如果我們長按了item則隱藏item,然后使用WindowManager來添加一個item的鏡像在屏幕用來代替剛剛隱藏的item
4、當我們手指在屏幕移動的時候,更新item鏡像的位置,然后在根據我們移動的X,Y的坐標來獲取移動到GridView的哪一個位置
5、到GridView的item過多的時候,可能一屏幕顯示不完,我們手指拖動item鏡像到屏幕下方,要觸發GridView想上滾動,同理,當我們手指拖動item鏡像到屏幕上面,觸發GridView向下滾動
6、GridView交換數據,刷新界面,移除item的鏡像
本例子來自于CSND xiaanming的博客,詳細的源碼分析已經幫大家離線成pdf文檔了。
Android例子源碼仿Launcher的GridView拖動 Android例子源碼仿Launcher的GridView拖動

文件夾 PATH 列表
卷序列號為 00000200 3CD2:D088
C:.
│  Android 可拖拽的GridView效果實現, 長按可拖拽和item實時交換 .pdf
│  javaapk.com文件列表生成工具.bat
│  JavaApk源碼說明.txt
│  目錄列表.txt
│  
└─DragGridView
    │  .classpath
    │  .project
    │  AndroidManifest.xml
    │  DragGridViewDemo.gif
    │  ic_launcher-web.png
    │  proguard-project.txt
    │  project.properties
    │  
    ├─.settings
    │      org.eclipse.jdt.core.prefs
    │      
    ├─assets
    ├─bin
    │  │  AndroidManifest.xml
    │  │  classes.dex
    │  │  jarlist.cache
    │  │  MainActivity.apk
    │  │  resources.ap_
    │  │  
    │  ├─classes
    │  │  └─com
    │  │      └─example
    │  │          └─draggridview
    │  │                  BuildConfig.class
    │  │                  DragGridView$1.class
    │  │                  DragGridView$2.class
    │  │                  DragGridView$OnChanageListener.class
    │  │                  DragGridView.class
    │  │                  MainActivity$1.class
    │  │                  MainActivity.class
    │  │                  R$attr.class
    │  │                  R$drawable.class
    │  │                  R$id.class
    │  │                  R$layout.class
    │  │                  R$menu.class
    │  │                  R$string.class
    │  │                  R$style.class
    │  │                  R.class
    │  │                  
    │  ├─dexedLibs
    │  │      android-support-v4-77c7f7d01ce9da77ecc09f06cbe6ac72.jar
    │  │      
    │  └─res
    │      ├─drawable-hdpi
    │      │      com_tencent_open_notice_msg_icon_big.png
    │      │      ic_launcher.png
    │      │      
    │      ├─drawable-ldpi
    │      │      ic_launcher.png
    │      │      
    │      ├─drawable-mdpi
    │      │      ic_launcher.png
    │      │      
    │      └─drawable-xhdpi
    │              ic_launcher.png
    │              
    ├─gen
    │  └─com
    │      └─example
    │          └─draggridview
    │                  BuildConfig.java
    │                  R.java
    │                  
    ├─libs
    │      android-support-v4.jar
    │      
    ├─res
    │  ├─drawable-hdpi
    │  │      com_tencent_open_notice_msg_icon_big.png
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-ldpi
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-mdpi
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-xhdpi
    │  │      ic_launcher.png
    │  │      
    │  ├─layout
    │  │      activity_main.xml
    │  │      grid_item.xml
    │  │      
    │  ├─menu
    │  │      activity_main.xml
    │  │      
    │  ├─values
    │  │      strings.xml
    │  │      styles.xml
    │  │      
    │  ├─values-v11
    │  │      styles.xml
    │  │      
    │  └─values-v14
    │          styles.xml
    │          
    └─src
        └─com
            └─example
                └─draggridview
                        DragGridView.java
                        MainActivity.java
                        

12條源碼討論
發表評論

您必須登錄才能評論.

11# f132665204466 2016-03-11 上午12:49

哥們,給力,頂你

10# sxfxwlh 2015-11-02 下午2:02

還是有bug,長按拖動不到具體位置時松手,就崩了

9# liu825378291 2015-07-22 下午5:10

這個代碼有個問題,就是空指針太多,還有就是如果拖動找不到替換的這個就不見了,然后點后面照樣這樣做,做了幾次以后會出現替換錯誤

8# liu4523116 2015-06-19 上午9:05

不錯,正好研究

7# jintianhao 2015-06-01 下午4:18

拉住刪除,有沒有、。?

6# 476964080 2015-04-03 下午12:57

太棒了!謝謝!

5# index神裂 2015-03-09 下午6:22

終于找到了示例,十分感謝

4# 軒轅客 2015-03-02 上午11:01

坑爹啊,鼠標不知道被誰點了下點歪了,真心好東西不是垃圾

地板 maple 2014-05-20 上午8:40

好東西啊

板凳 pans 2014-05-05 上午9:22

界面之間移動有問題嗎?刪除之后會不會有重復的item出現,我以前做的時候遇到過這些問題,有解決的思路嗎

沙發 qq274582643 2014-04-27 下午10:42

有完整思路,代碼不錯。

?2013-2019 JavaApk.com· 魯ICP備13032311號-1· Powered by WordPress· Theme by JavaApkTM · 網站地圖.19 queries in 0.149 seconds


竟彩足球比分直播