Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android sdk 3.0中的拖动手势实现错误_Android_View_Drag_Sdk3.0 - Fatal编程技术网

Android sdk 3.0中的拖动手势实现错误

Android sdk 3.0中的拖动手势实现错误,android,view,drag,sdk3.0,Android,View,Drag,Sdk3.0,我想在LinearLayout视图中实现拖动手势,其中包含一些组件,例如TextView、button。现在我使用APL level 11,3.0 SDK根据Android Official文档进行设计,代码中包含的方法如下: onLongClick()---使用view.startDrag(clipdate,dragShadow,null,0)触发拖动动作 onDrag()---一个拖动侦听器,使用view.layout(左、上、右、下),刷新组件的外观,直到被拖动为止 我遇到的问题是,当我在

我想在LinearLayout视图中实现拖动手势,其中包含一些组件,例如TextView、button。现在我使用APL level 11,3.0 SDK根据Android Official文档进行设计,代码中包含的方法如下:

onLongClick()---使用view.startDrag(clipdate,dragShadow,null,0)触发拖动动作

onDrag()---一个拖动侦听器,使用view.layout(左、上、右、下),刷新组件的外观,直到被拖动为止

我遇到的问题是,当我在LinearLayou视图中拖动一个组件时,其他组件会消失,而当我放下拖动的组件时,它会和其他组件一起消失


所以,请任何人都能帮我告诉我它是如何出错的,或者我怎样才能根据你的建议很好地实施拖动手势。首先,感谢并感谢每一位GU来到这里。

我使用的代码如下:

@Override
public boolean onLongClick(View view) {
    // TODO Auto-generated method stub
    boolean result = true;
    if(DEBUG){
        Log.d(TAG, "onLongClick ()");
    }
    mLongTouch = true;
    ClipData.Item item = new ClipData.Item((CharSequence) view.getTag());
    ClipData dragData = new ClipData((CharSequence) view.getTag(), mTabDragMimeData, item);
    SimeTabDragListener.SimeTabDragShadow myShadow = new SimeTabDragListener.SimeTabDragShadow(view);
    view.startDrag(dragData, myShadow, null, 0);
    return result;
}

@Override
public boolean onDrag(View view, DragEvent event) {
    // TODO Auto-generated method stub
    boolean result = true;
    int action = event.getAction();
    int eventX = (int)event.getX();
    int eventY = (int)event.getY();
    if(DEBUG){
        Log.d(TAG, "onDrag()...event is  "+action + ".... X cor is "+event.getX()+"...Y  cor is"+event.getY());
    }
    view.layout(eventX - mDownOffsetsX, eventY - mDownOffsetsY,
            eventX + mDownViewWidth - mDownOffsetsX, eventY + mDownViewHeight - mDownOffsetsY);
    view.postInvalidate();
    return result;
//返回super.onDragEvent(事件); }

而LinearLayout中包含的组件(TextView)是静态的,并且是通过XML加载的,问题是当拖动一个TextView时,其他TextView将消失,而当拖放它时,其他TextView将消失

有没有人知道这是怎么回事,或者如何在LayoutView中实现拖动动作,谢谢大家来到这里

// drag shadows 
public static class SimeTabDragShadow extends View.DragShadowBuilder {
            private static  Drawable shadow;
            public SimeTabDragShadow(View view) {
                super(view);
                if(DEBUG && view instanceof TextView)
                    Log.d(TAG, "drag view is text");
                shadow = new ColorDrawable(Color.LTGRAY);
            }
            @Override
            public void onProvideShadowMetrics(Point shadowSize,
                    Point shadowTouchPoint) {
                // TODO Auto-generated method stub
                super.onProvideShadowMetrics(shadowSize, shadowTouchPoint);
            }
            @Override
            public void onDrawShadow(Canvas canvas) {
                // TODO Auto-generated method stub
                super.onDrawShadow(canvas);
            }


        }