0

在我的应用程序中,我有一个带有网格视图的屏幕,其中我在 2 列中显示照片。我想增加通过拖放来重新排序照片的可能性。我有 android 4.0,我使用了 android 本机拖放:

http://developer.android.com/guide/topics/ui/drag-drop.html

所以,我已经添加了拖放功能,但问题是,当用户试图将顶部图像拖到底部时,我需要滚动网格视图。使用 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 空间时,不会调用拖动。拖动项目时如何获取手指坐标?

4

2 回答 2

1

您可以实现DraggableGridViewPagedDragDropGrid,它们都可以为您解决这个问题。

编辑:这是一个直接扩展 GridView 的新库: https ://github.com/askerov/DynamicGrid

于 2013-03-15T15:27:08.833 回答
0

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

于 2013-03-15T14:50:18.043 回答