类似桌面图标的拖拽效果

解决方案 »

  1.   

    参考API DEMOS 中graphics中的patterns
      

  2.   

    android系统图片在桌面上也是可以拖动的,是这种效果的话可以直接参考系统代码。
      

  3.   

    参考API DEMOS 中graphics中的patterns
    这个例子就是你想要的效果。
      

  4.   

    主要还是想实现类似android系统桌面,处理item的方法
      

  5.   


    实验了下,应该就是桌面拖动效果的一个小demo!
      

  6.   

    API DEMOS 中graphics中的patterns只是实现了一个简单的拖拽功能,我需要的是gridview中item的拖拽,并且能够通过退拽实现item在gridview中位置的改变
      

  7.   

    有高人,研究过luncher中有关拖拽的代码么?
      

  8.   

    已经实现item的横向拖动,为何纵向拖动有问题。只能拖动几个像素,图标就不走了
      

  9.   

    你要做什么呢?GRIDVIEW的ITEM是可以实现拖拽的,不清楚你是怎么实现的哦本人做过,初始化GRIDVIEW后,监听一个onTouch事件,我这不能直接得到ITEM的焦点(如果你可以请告知我),我是初始化后得到所有ITEM的XY坐标,然后根本坐标判断是哪个ITEM,然后直接可以拖拽GIRDVIEW中的任何一个ITEM,只是每次拖拽的时候其他ITEM会自动移动,每次只能添加到GRIDVIEW的最后目前也正在研究GIRDVIEW的拖拽,你有什么东西可以分享点么,一起研究啊
      

  10.   

    我是在系统的get view方法中写的拖动代码,可以实现左右的拖动。
      

  11.   

    能给个demo吗 [email protected] 谢谢诶
      

  12.   

    同求效果,方便的话,也请告知一声[email protected]
      

  13.   

    高手呀。对api demo这么熟悉
      

  14.   

     final Rect r = mDragRect;
        final int count = container.getChildCount();
        final int scrolledX = x + container.getScrollX();
        final int scrolledY = y + container.getScrollY();
        final View ignoredDropTarget = mIgnoredDropTarget;    for (int i = count - 1; i >= 0; i--)
        {
            final View child = container.getChildAt(i); 
                if (child.getVisibility() == VISIBLE && child != ignoredDropTarget) {
                    child.getHitRect(r);
                    if (r.contains(scrolledX, scrolledY)) {
                        DropTarget target = null;
                        if (child instanceof ViewGroup) {
                            x = scrolledX - child.getLeft();
                            y = scrolledY - child.getTop();
                            target = findDropTarget((ViewGroup) child, x, y, dropCoordinates);
                        }
                        if (target == null) {
                            if (child instanceof DropTarget) {
                                // Only consider this child if they will accept
                                DropTarget childTarget = (DropTarget) child;
                                if (childTarget.acceptDrop(mDragSource, x, y, 0, 0, mDragInfo)) {
                                    dropCoordinates[0] = x;
                                    dropCoordinates[1] = y;
                                    return (DropTarget) child;
                                } else {
                                    return null;
                                }
                            }
                        } else {
                            return target;
                        }
                    }
                }
            }        return null;
    这是拖拽目标的选择,不断地减小选择区域,最终放下,拖拽有拖拽源,和拖拽的action还有就是 最后的落点,因为android的界面是已经被网格化了的!所以代码中定义了 最终的那个RECT用于获取最终发下的网格坐标!