拖放GridView,允许将项目添加到现有项目以及重新排序

时间:2014-08-10 21:15:10

标签: android android-listview drag-and-drop android-gridview

我正在写一个发射器。

它有一个GridView,其中包含应用程序的应用程序和文件夹。

我希望能够重新排序GridView ...这是一个简单的部分,因为我在下面看到的lib提供了重新排序:

https://github.com/askerov/DynamicGrid

https://github.com/mrKlar/PagedDragDropGrid

但是,我希望能够将我拖动的项目添加到文件夹,这与Google Now Launcher的工作方式完全相同。机制是你长按一个应用程序开始拖放后,如果你将鼠标悬停在另一个项目上,它将允许你将它添加到文件夹(如果它是一个文件夹)或创建一个文件夹(如果它是一个应用程序)。如果您将鼠标悬停在项目的边缘附近,则会重新排序,而不是将其添加到项目中。

我不想从头开始编写这个,但是无法通过重新排序和添加来找到任何拖放GridViews(或ListViews)的示例。

有没有人有lib,一些示例代码,或者大致了解如何操作?

1 个答案:

答案 0 :(得分:1)

你好运,我也在写一个发射器!

您可以为所有图标执行的操作是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

位于同一文件中

但是,我自己编写了所有启动器代码,因此这可能不适用于您的库。