我正在尝试开发自定义启动器应用程序(具有无限数量的主页),我需要在Launcher2(android 4.2)中实现拖放。
所以我发现了两种方法
1)Drag and Drop framework
2)使用android launcher2方式,如实现DragController,DragSource,如解释here。
但我很难理解为什么Android家伙没有在他们自己的应用程序中使用他们开发的拖放框架。任何人都可以简要介绍他们的方法背后可能的理由吗?(我的意思是在记忆/表现方面)
提前致谢。
答案 0 :(得分:3)
与Launcher应用程序中使用的相比,Android拖放框架非常基本。
Launcher应用程序有无数的"层"并且在这些层中发生拖放,即DragLayer,Workspace和All Apps视图等。它使用窗口标志,并在拖动进行时动态地向DragLayer添加/删除视图,并且大量活动监视拖动。有关更多详细信息,请特别查看DragLayer.java和Workspace.java文件。
答案 1 :(得分:2)
Android Launcher中的拖放操作在同一ViewGroup和同一窗口中作为Overlay绘图完成。但是android拖放方法创建了一个单独的窗口,完全独立的窗口类型。
资源和内存明智的标准Android拖放方法更昂贵。
如果性能非常关键我的建议是按照Android启动器方式进行,否则更喜欢标准的android方法,简单易行。
答案 2 :(得分:0)
拖放框架是sice api 11。 我的猜测是,在此之前编写了很多启动程序的代码,没有人有时间重构它。但api与第二种方法类似。
答案 3 :(得分:0)
http://javapapers.com/android/android-drag-and-drop/。这是最好的拖放示例,因为我在我的应用程序中实现了相同的功能。注意:它将仅支持11以上的版本。拖放功能将不支持版本10.相反,您必须通过settin X和Y positons以绝对布局移动字段。但绝对布局已被完全弃用......
答案 4 :(得分:0)
如果您的应用程序不是那么复杂,您应该使用WindowManaager来控制拖放。这很容易实现,并且位置已更改。获取代码Here