在Android中拖放Imageview

时间:2017-08-02 03:36:15

标签: android drag-and-drop imageview drag

how to drag image to drop any of this imageview 我想将Imageview图像拖放到给定的imageviews中的任何一个并匹配该类型。我怎样才能在Android中实现这一目标。我已经完成了将一个ImageView拖到另一个ImageView,但不知道如何实现多重放置ImageView

1 个答案:

答案 0 :(得分:0)

通过将TextView从一个LinearLayout移动到另一个LinearLayout来演示拖放手势。

public class MainActivity extends Activity implements OnTouchListener,OnDragListener{
        private static final String LOGCAT = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            findViewById(R.id.textView1).setOnTouchListener(this);
            findViewById(R.id.pinkLayout).setOnDragListener(this);
            findViewById(R.id.yellowLayout).setOnDragListener(this);
        }
        public boolean onTouch(View view, MotionEvent motionEvent) { 
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                  DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
                  view.startDrag(null, shadowBuilder, view, 0);
                  view.setVisibility(View.INVISIBLE);
                  return true;
                }
                else {
                    return false;
                }
        }  
        public boolean onDrag(View layoutview, DragEvent dragevent) {
              int action = dragevent.getAction();
              switch (action) {
              case DragEvent.ACTION_DRAG_STARTED:
                  Log.d(LOGCAT, "Drag event started");
                break;
              case DragEvent.ACTION_DRAG_ENTERED:
                  Log.d(LOGCAT, "Drag event entered into "+layoutview.toString());
                break;
              case DragEvent.ACTION_DRAG_EXITED:
                  Log.d(LOGCAT, "Drag event exited from "+layoutview.toString());
                break;
              case DragEvent.ACTION_DROP:
                Log.d(LOGCAT, "Dropped");
                View view = (View) dragevent.getLocalState();
                ViewGroup owner = (ViewGroup) view.getParent();
                owner.removeView(view);
                LinearLayout container = (LinearLayout) layoutview;
                container.addView(view);
                view.setVisibility(View.VISIBLE);
                break;
              case DragEvent.ACTION_DRAG_ENDED:
                      Log.d(LOGCAT, "Drag ended");
                  break;
              default:
                break;
              }
              return true;
        }
    }

<强> activity_main.xml中

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/center"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <LinearLayout
        android:id="@+id/pinkLayout"
        android:layout_width="fill_parent"
        android:layout_height="210dp"
        android:background="#FF8989"
        android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dragtext" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/yellowLayout"
        android:layout_width="fill_parent"
        android:layout_height="250dp"
        android:layout_marginTop="210dp"
        android:background="#FFCC00"
        android:orientation="vertical" >
    </LinearLayout>

</RelativeLayout>

enter image description here