4
다른 ImageView 또는 레이아웃 내부의 ImageView를 간단하게 드래그 앤 드롭 할 수 있습니다. 여기에 내가Android ImageView를 다른 ImageView (또는 레이아웃)로 드래그 앤 드롭
에게 내가이 일을 알고있는 유일한 방법을 수행 할 작업의 사진은 하나의 "보낸 사람"이 선형 레이아웃을 가진 통해 그리고 "TO"및 제 2 레이아웃 배경에 할당 회색 문자의 이미지. 원래 장소
은 여기가 onTouch와 onDrag가 작동하고 이동할 때 감지 얻을 관리했습니다
public class MainActivity extends Activity implements OnTouchListener,
OnDragListener {
private static final String LOGCAT = null;
/*
* Here are the links I've been using
* http://www.techrepublic.com/blog/software-engineer/try-androids-useful-drag-and-drop-api/
* http://codingjunkie.net/android-drag-and-drop-part-2/
* http://javapapers.com/android/android-drag-and-drop/
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.letter_a).setOnTouchListener(this); // My yellow letter a image
findViewById(R.id.top_container).setOnDragListener(this); // My 1st linear layout
findViewById(R.id.bottom_container).setOnDragListener(this); // My 2nd linear layout with "grayed a" image
}
@Override
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;
}
}
@Override
public boolean onDrag(View layoutview, DragEvent dragevent) {
int action = dragevent.getAction();
View view = (View) dragevent.getLocalState();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
break;
case DragEvent.ACTION_DRAG_ENTERED:
break;
case DragEvent.ACTION_DRAG_EXITED:
break;
case DragEvent.ACTION_DROP:
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");
if (dropEventNotHandled(dragevent)){
view.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
return true;
}
private boolean dropEventNotHandled(DragEvent dragEvent) {
return !dragEvent.getResult();
}
}
내 코드지만, 그것은 그것을 다시 끌 수 없습니다 그래서 내가 제자리에 고정 할의 .
대단히 감사합니다!
브릴리언트! 많은 감사합니다. –