我正在写一个启动器。
它有一个包含应用程序和应用程序文件夹的 GridView。
我希望能够对 GridView 重新排序...这是简单的部分,因为我在下面查看的库提供重新排序:
https://github.com/askerov/DynamicGrid
https://github.com/mrKlar/PagedDragDropGrid
但是,我还希望能够将我正在拖动的项目添加到文件夹中,这与 Google Now Launcher 的工作方式完全相同。该机制是,在您长按一个应用程序开始拖放之后,如果您将鼠标悬停在另一个项目上,它将允许您将其添加到文件夹(如果它是一个文件夹)或创建一个文件夹(如果它是一个应用程序)。如果您将鼠标悬停在项目的边缘附近,它会重新排序而不是将其添加到项目中。
我不想从头开始写这篇文章,但一直无法找到任何拖放 GridView(或 ListView)以及重新排序和添加的示例。
有没有人有库、一些示例代码或关于如何做的粗略想法?
最佳答案
你真幸运,我也在写一个启动器!
您可以为所有图标做的是 setOnDragListener(new Yourclass())
在 Yourclass
中,您可以:
class Yourclass implements View.OnDragListener{
@Override
public boolean onDrag(View v, DragEvent event) {
final int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
//Code for folder
case DragEvent.ACTION_DROP:
if (event.getAction()==DragEvent.ACTION_DROP) {
//save folder?
}
return true;
case DragEvent.ACTION_DRAG_ENDED:
//do nothing
default:
break;
}
return true;
}
}
确保 Yourclass
与 longclicklistener 在同一个文件中
但是,我自己编写了所有启动器代码,因此这可能不适用于您的库。
关于android - 拖放 GridView,它允许将项目添加到现有项目以及重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25233081/