源码简介

本例子是一个长按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.084 seconds