Android 实现高仿iOS桌面效果之可拖动的GridView(上)

本文详细介绍了如何在Android中创建一个可拖动的GridView,模仿iOS桌面的抖动效果。通过分析UI和功能,实现动态调整列数、长按拖动、动画控制、数据交换及删除功能。文章分为UI和功能分析、动画控制器、Adapter监听器、GridView实现和Activity等部分,提供了完整源码供下载参考。
摘要由CSDN通过智能技术生成
   
      转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40074663,作者:skay
     最近项目中遇到一个LIstview的拖动效果,github上一搜发现有叫DragListview的开源项目,然后自己再小手一搜拖动排序的GridView,却没发现什么很全很好的开源项目,后来在博客上发现有一遍比较好的拖动排序的文章,可是跟自己的期望的IOS Luncher效果一比,相差那甚远,因此就在别人的代码基础加以开发,好的利用,不好的摒弃。

一 UI和功能分析

    发现目前主流的安卓厂商的手机桌面应用已经实现了此效果,也有APP实现的,如有UC浏览器,但是他貌似无抖动效果。先就Ios的桌面效果作如下需求总结:
 我们可以把ios的luncher拆分一下 如下图:

 特此我们可以将两个fragment加入同一个activty中,当然也可以将两个gridview放到一个线性布局中,即可,先从上面的Gridview进行分析。
    1  GridView长按支持拖动排序,并支持Item实时交换。
     2  GridView长按Item出现有抖动效果。
     3 Item条目有抖动效果,时不需要长按点击就可以进行拖动效果。
      4 拖动的Item和被拖动的Item左标完全重合后可新建文件夹
      5 长按Item 出现删除按钮,此时点击删除按钮可以任意删除某一item
      6 GridView横竖屏排列列数改变,横屏的行数是竖屏幕的列数

分析完主要功能之后我们就开始代码实现策略,方便我们理清思路。

  1. 根据手指按下的X,Y坐标来获取我们在GridView上面点击的item位置
  2. 根据当前屏幕状态,动态设置gridview的列数。做到横竖屏展现不同个列数的效果。
  3. 长按手指达不到规定的时间阀值,将无法拖动状态。时间超过将松开手指后,将gridView的子控件一次开启抖动动画。
  4. 如果我们长按了item则隐藏item,然后使用WindowManager来添加一个item的镜像在屏幕用来代替刚刚隐藏的item
  5. 当我们手指在屏幕移动的时候,更新item镜像的位置,然后在根据手指移动的X,Y的坐标来确定当前镜像的位置。
  6. 到GridView的item过多的时候,可能一屏幕显示不完,我们手指拖动item镜像到屏幕下方,要触发GridView想上滚动,同理,当我们手指拖动item镜像到屏幕上面,触发GridView向下滚动
  7. GridView交换数据,刷新界面,移除item的镜像,显示被影藏的item.
  8. 当抖动效果出现,点击删除按钮时,为了赠加移动效果,将要删除的item和末位item交换,然后删除lastItem,通知适配器更新数据。
  9. 抖动效果出现后,如果Onclick,就视为可拖动状态。
   接下来就开始实现需求所列的效果了。为了实现上面需求,需要写一个Gridview,Adapter,和抖动动画。包括移动是的动画。

二 新建动画控制器 

   1  item实现抖动效果
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值