Android:在网格视图中拖放(Android 4.0+;)

Android:在网格视图中拖放(Android 4.0+;),android,Android,在我的应用程序中,我有一个带有网格视图的屏幕,我在其中以两列显示照片。 我想添加的可能性,以重新排序的照片拖放结束。 我有android 4.0,我使用android本机拖放: 所以,我已经添加了拖放功能,但问题是,当用户试图将顶部图像拖动到底部时,我需要滚动网格视图。使用smoothSctollTo()方法以编程方式滚动gridView不是问题,但当我拖动项目时,我需要检查手指是否位于屏幕底部。问题在于: @Override public boolean onDrag(fin

在我的应用程序中,我有一个带有网格视图的屏幕,我在其中以两列显示照片。 我想添加的可能性,以重新排序的照片拖放结束。 我有android 4.0,我使用android本机拖放:

所以,我已经添加了拖放功能,但问题是,当用户试图将顶部图像拖动到底部时,我需要滚动网格视图。使用smoothSctollTo()方法以编程方式滚动gridView不是问题,但当我拖动项目时,我需要检查手指是否位于屏幕底部。问题在于:

    @Override
    public boolean onDrag(final View v, final DragEvent event) {
        Log.v("Coordinates", " " + v.getY());
        switch (event.getAction()) {
        case DragEvent.ACTION_DRAG_STARTED:
            break;
        case DragEvent.ACTION_DRAG_ENTERED:
            break;
        case DragEvent.ACTION_DRAG_EXITED:
            break;
        case DragEvent.ACTION_DROP:
            break;
        case DragEvent.ACTION_DRAG_ENDED:
            break;
        default:
            break;
        }
        return true;
    }
};
仅当一个gridview项与另一个项相交时,才会调用所有这些事件。 但当我将项目拖动到干净的gridView空间上时,不会调用on drag。
当我拖动项目时,如何获得手指坐标?

根据我对android的了解,我建议您设置一个指向要滚动的视图,这样,如果您已经到达W视图的底部(根据视图位置和高度进行一些计算),您可以开始滚动。

您可以实现或,这两种方法都能为您解决此问题

编辑:这是一个直接扩展GridView的新库:

我已经实现了它,希望有一个选项可以自定义gridsize,我可以怎么做?@user2459623我刚刚查看了代码,看起来在绘制视图时,列是自动确定的。我用一个扩展GridView的新库更新了这篇文章,使您可以像普通GridView一样进行自定义。当我们拖动grid时,其他网格会自行改变位置,我希望在不影响其他网格位置的情况下交换任意两个项目。怎样才能做到呢?有什么想法吗??