2016-06-23 3 views
0

내가 바로 뷰에있는 상자를 드래그 할 때마다 나는 안드로이드 드래그 앤 드롭 기능

사전

에 감사 할 것입니다 도움이 모든 종류의 여기 MainActivity의 내 소스 코드 안드로이드 응용 프로그램에서 초보자입니다. 자바

package com.condorpos.demoapp2; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.DragEvent; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 

public class MainActivity extends AppCompatActivity implements View.OnTouchListener, View.OnDragListener { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //set ontouch listener for box view 
    findViewById(R.id.box_view1).setOnTouchListener(this); 
    findViewById(R.id.box_view2).setOnTouchListener(this); 
    findViewById(R.id.box_view3).setOnTouchListener(this); 
    findViewById(R.id.box_view4).setOnTouchListener(this); 

    //set ondrag listener for right and left parent views 
    findViewById(R.id.left_view).setOnDragListener(this); 
    findViewById(R.id.right_view).setOnDragListener(this); 
} 

@Override 
public boolean onDrag(View v, DragEvent event) { 
    //TODO Auto-generated method stub 
    if(event.getAction()==DragEvent.ACTION_DROP){ 
     //we want to make sure it is dropped only to left and right parent view 
     View view = (View)event.getLocalState(); 

     if(v.getId() == R.id.left_view || v.getId() == R.id.right_view){ 

      ViewGroup source = (ViewGroup) view.getParent(); 
      source.removeView(view); 

      LinearLayout target = (LinearLayout)v; 
      target.addView(view); 

     } 
     // make view visible as we set visibility to invisible while starting drag 
     view.setVisibility(View.INVISIBLE); 
    } 
    return true; 
} 

@Override 
public boolean onTouch(View view, MotionEvent event) { 
    // TODO Auto-generated method stub 
    if(event.getAction() == MotionEvent.ACTION_DOWN){ 
     View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
     view.startDrag(null, shadowBuilder, view, 0); 
     view.setVisibility(View.INVISIBLE); 
     return true; 
    } 
    return false; 
} 

}

그리고 activity_main.xml에 대한

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    tools:context="com.condorpos.demoapp2.MainActivity"> 

<LinearLayout 
    android:id="@+id/left_view" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_margin="10dp" 
    android:layout_weight="1" 
    android:background="@android:color/darker_gray" 
    android:gravity="center_vertical" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/box_view1" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:layout_margin="10dp" 
     android:background="@drawable/box_one"/> 

    <ImageView 
     android:id="@+id/box_view2" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:layout_margin="10dp" 
     android:background="@drawable/box_two"/> 

    <ImageView 
     android:id="@+id/box_view3" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:layout_margin="10dp" 
     android:background="@drawable/box_three"/> 

    <ImageView 
     android:id="@+id/box_view4" 
     android:layout_width="70dp" 
     android:layout_height="70dp" 
     android:layout_gravity="center_horizontal|center_vertical" 
     android:layout_margin="10dp" 
     android:background="@drawable/box_four"/> 

</LinearLayout> 

<LinearLayout 
    android:id="@+id/right_view" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_margin="10dp" 
    android:layout_weight="1" 
    android:background="@android:color/darker_gray" 
    android:gravity="center_vertical" 
    android:orientation="vertical"> 

</LinearLayout> 

</LinearLayout> 

목 anks 얘들 아. 액션까지 감지하거나 댓글 (액션 드롭) 가시성을 설정하는 표시 addView 후 때

+1

[Android 드래그 앤 드롭 기능] (http://stackoverflow.com/questions/18725601/android-drag-and-drop-functionality)의 가능한 복제본 –

답변

3

당신은 View.VISIBLE에 가시성을 설정해야합니다.