안드로이드 drag and drop 예제

응용 프로그램은 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를 반환합니다. } // 시스템이 수신기에 드래그 이벤트를 디스패치할 때 호출하는 방법입니다.