Мне нужно иметь возможность «Добавить кнопку и перетащить ее в папку». По какой-то странной причине я не получаю никаких записей из моего draglistener, и я могу только перемещаться из левой верхней угла в правый нижний угол (!?) при добавлении кнопки я сгореть следующий кодAndroid drag n drop view
@OnClick(R.id.remote_add_button)
public void addRemoteNewButton() {
fabMenu.collapse();
enableDragAndDropLayout(true);
View v = new ImageView(getActivity());
v.setTag("New button");
v.setBackgroundColor(getResources().getColor(R.color.primary_dark));
layoutParams = new RelativeLayout.LayoutParams(60, 60);
layoutParams.setMargins(50, 50, 0, 0);
remoteContainer.addView(v, layoutParams);
v.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Timber.d("onClick()");
ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = {ClipDescription.MIMETYPE_TEXT_PLAIN};
ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);
View.DragShadowBuilder myShadow = new View.DragShadowBuilder(v);
v.startDrag(dragData, myShadow, null, 0);
return true;
}
});
v.setOnDragListener(new MyDragListener());
}
private class MyDragListener implements View.OnDragListener {
@Override
public boolean onDrag(View v, DragEvent event) {
int x_cord;
int y_cord;
int action = event.getAction();
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
Timber.i("Action is DragEvent.ACTION_DRAG_STARTED");
break;
case DragEvent.ACTION_DRAG_ENTERED:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
Timber.i("Action is DragEvent.ACTION_DRAG_ENTERED");
break;
case DragEvent.ACTION_DRAG_EXITED:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
layoutParams.leftMargin = x_cord;
layoutParams.topMargin = y_cord;
v.setLayoutParams(layoutParams);
Timber.i("Action is DragEvent.ACTION_DRAG_EXITED");
break;
case DragEvent.ACTION_DRAG_LOCATION:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
Timber.i("Action is DragEvent.ACTION_DRAG_LOCATION");
break;
case DragEvent.ACTION_DROP:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
Timber.i("Action is DragEvent.ACTION_DROP");
break;
case DragEvent.ACTION_DRAG_ENDED:
x_cord = (int) event.getX();
y_cord = (int) event.getY();
Timber.i("Action is DragEvent.ACTION_DRAG_ENDED");
break;
default:
Timber.i(event.toString());
break;
}
return true;
}
}
Может any1 мне точку в правильном направлении? Потому что я не могу найти подходящего решения. Я пробовал множество учебников, редактируя код, потому что некоторые просто не имеют никакого смысла. Попробуйте «примеры», но все они дали тот же результат. Любые советы? Был бы потрясающий подарок X-mas, p Приветствия, и наслаждайтесь праздниками!
Этот пример может помочь вам: https://github.com/Humoule/DragDropApplication –
[Android Draggable View] (HTTP: // WWW. singhajit.com/android-draggable-view/) –