응용 프로그램은 startDrag() 메서드를 호출하여 드래그를 시작하도록 시스템에 지시합니다. 이렇게 하면 시스템이 드래그 이벤트 보내기를 시작하도록 지시합니다. 메서드는 또한 드래그 하는 데이터를 보냅니다. 레이아웃에는 ImageView 내부를 드래그하는 데 사용할 두 개의 Button이 포함되어 있습니다. ImageView는 아래 그림과 같은 파일 circle_border.xml에 있는 그림을 표시합니다. 이 자습서에서는 응용 프로그램에서 Android 드래그 앤 드롭 기능을 구현합니다. Android 프레임워크에는 응용 프로그램에서 끌어서 놓기 기능을 구현하기 위한 기본 제공 메커니즘이 있습니다. 일반적으로 시스템은 드래그 이벤트 오브젝트(DragEvent)를 전송하여 드래그/드롭 프로세스를 수행하고 DragEvent 오브젝트에는 드래그/드롭 프로세스에서 무슨 일이 일어나고 있는지 청취자에게 알려주는 동작 유형이 포함되어 있습니다. 패키지 com.tutlane.draganddrop예제; android.content.ClipData 가져오기; android.content.Clip 설명 가져오기; 가져 오기 안드로이드.graphics.Color; 가져 오기 안드로이드.graphics.PorterDuff; 가져 오기 안드로이드.support.v7.app.App.AppCompatActivity; 가져 오기 android.os.Bundle; 가져 오기 android.util.Log; 가져 오기 android.view.DragEvent; 가져오기 android.view.View; 가져오기 android.view.ViewGroup; 가져 오기 android.widget.Button; 가져 오기 안드로이드.widget.ImageView; 가져 오기 android.widget.LinearLayout; 가져 오기 안드로이드.widget.TextView; 가져 오기 android.widget.Toast; 공용 클래스 메인 액티비티 확장 AppCompatActivity 구현 View.OnDragListener, View.OnLongClickListener { @Override 보호 된 void onCreate (번들 저장 인스턴스 상태) { super.onCreate (저장 인스턴스 상태); setContentView R.layout.activity_main); 모든 보기를 찾아 태그를 모든 드래그 뷰TextView txtVw = (TextView) findViewById(R.id.lbl)로 설정합니다. txtVw.setTag(«드래그 블 텍스트 뷰»); txtVw.setOnLongClick수신기 (이); 이미지뷰 imgVw = (이미지뷰) findViewById(R.id.ingvw); imgVw.setTag («안드로이드 아이콘»); imgVw.setOnLongClick수신기 (이); 버튼 btn = (버튼) findViewById (R.id.btnDrag); btn.setTag(«드래그 가능한 버튼»); btn.setOnLongClick수신기 (이); 정의된 레이아웃에 대한 드래그 이벤트 리스너 설정 findViewById(R.id.layout1).setOnDragListener(이);; findViewById(R.id.layout2).setOnDragListener(이); findViewById(R.id.layout3).setOnDragListener(이); } @Override 공개 부울 onLongClick (보기 v) { // 이미지뷰 개체의 태그 ClipData.Item = 새 ClipData.Item에서 새 ClipData.항목을 만듭니다.항목.항목((CharSequence) v.getTag()); // 태그를 레이블, 일반 텍스트 MIME 유형 및 /// 이미 생성된 항목입니다. 이렇게 하면 // ClipData 내에서 새 ClipDescription 개체가 생성되고 MIME 형식 항목을 «텍스트/일반» 문자열[] mimeType = {ClipDescription.MIMETYPE_TEXT_PLAIN}로 설정합니다. ClipData 데이터 = 새 클립데이터(v.getTag().toString(), 마임유형, 항목); 드래그 섀도우 빌더를 인스턴스화합니다.
View.DragShadowBuilder 드래그섀도우 = 새 보기.DragShadowBuilder(v); 드래그 v.startDrag (데이터 // 데이터를 드래그 할 , dragshadow // 드래그 섀도 빌더, v // 드래그 앤 드롭 작업에 대한 로컬 데이터 , 0 // 플래그 (현재 사용되지 않음, 0으로 설정)를 시작합니다. true를 반환합니다. } // 시스템이 수신기에 드래그 이벤트를 디스패치할 때 호출하는 방법입니다.