仿 Hola桌面 Launcher 定制 滑动文件夹 之 拖动分析

来源:互联网 发布:阿里云邮服务器地址 编辑:程序博客网 时间:2024/04/27 13:21

好久没写博客。还是习惯写思路。思路最重要。

Launcher的拖动无非就是一个DragController说简单也简单,说复杂有时候也挺复杂的,以下简单的说下自己的理解。说得有错的地方大家可以指出来。

DragSource  拖动源头,顾名思义,就是从哪里拖进来的。比如从 workspace --->folder, 从foler --->workspace  ,从 folder--> deleteTagter 等 。就是从哪里到哪里,前面那个哪里,就是DragSource。

DropTarget  同理,拖动的目的。  

  DragController.DragListener   拖动的监听。哪里用到他呢。 比如拖动删除。他就要实现这个 监听,当长按的时候,就让屏幕最顶部出现 删除的XX。或者获取焦点等。


比如我们现在要实现一个,Viewpage带 文件夹,里面可以拖动,可以排序可以删除,可以从文件夹拖动 到   一个  ButtonDropTarget等。

那我们来分析下:

1、图标在文件夹内,又可以拖动到文件夹内。  所以我们这个文件夹必须实现 2个接口。   DragSource  、DropTarget  

2、是不是也要实现 长按监听 和点击监听  View.OnClickListenerView.OnLongClickListener

3、文件夹内又要实现左右滑动 VIewpage 

4、每个文件夹个是不是也要嵌套在 VIewPage(注明里面需要解决各种冲突。不然滑动不了。事件的分发拦截消耗)

5、每个Foler最好是 ScrollView嵌套 CellLayout ,当然 也可以是个其他布局,重写。Scroll Help 滑动工具实现这个 滑动。阻尼。

6、添加到DragLayout 拖动层的 下一层。

当然整个过程到文件夹可以拖动流程,滑动流畅,还需要大家自己摸索。整个文件夹过程实现,确实比较复杂。要完整的实现出来没有对嵌套布局冲突,还有Launcher有一定的了解,很难去坚持下了。我在实现整个文件夹实现整整花了2-3个礼拜。

0 0
原创粉丝点击