Жест перетаскивания осуществить неправильно с SDK 3.0 - PullRequest
0 голосов
/ 05 ноября 2011

Я хочу реализовать жест перетаскивания в представлении LinearLayout, и в нем содержатся некоторые компоненты, такие как TextView, кнопка.Теперь я использую SDK уровня 11,3.0 для APL, чтобы спроектировать его в соответствии с официальным документом Android. Методы, включенные в мои коды, приведены ниже:

onLongClick () --- запуск движения Drag с помощью view.startDrag (clipdate,dragShadow, null, 0)

onDrag () --- прослушиватель перетаскивания, используйте view.layout (left, top, right, bottom), обновите внешний вид компонента, перетащив

ипроблема, с которой я сталкиваюсь, состоит в том, что другие компоненты исчезают, когда я перетаскиваю один из них в представлении LinearLayou, а когда я перетаскиваю один компонент перетаскивания, он исчезает вместе с другими.или как я могу реализовать жест перетаскивания хорошо с вашим предложением.Во-первых, спасибо и ценим, что каждый придет сюда.

1 Ответ

0 голосов
/ 07 ноября 2011

коды, которые я использовал ниже:

@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;

// return super.onDragEvent (event); }

// 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);
            }


        }

и компоненты (TextView), содержащиеся в LinearLayout, являются статическими и загружаются XML, проблема в том, что другой TextView исчезнет при перетаскивании одного TextView и исчезнет с другими при его удалении.

есть кто-то, кто знает, как это происходит, или как реализовать Drag Gesture в LayoutView, спасибо, ребята, пришли сюда.

...