Я создаю игровое приложение, где мне нужно использовать ondraglistener для перетаскивания здесь, что я делаю в классе, который реализует onDraglistener.
@Override
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DRAG_STARTED:
Log.v("here","drag started");
//no action necessary
break;
case DragEvent.ACTION_DRAG_ENTERED:
//no action necessary
Log.v("here","drag enteres");
break;
case DragEvent.ACTION_DRAG_LOCATION:
int mCurX = (int) event.getX();
int mCurY = (int) event.getY();
Log.v("Cur(X, Y) : " ,"here ::" + mCurX + ", " + mCurY );
break;
case DragEvent.ACTION_DRAG_EXITED:
//no action necessary
Log.v("here","drag exits");
break;
case DragEvent.ACTION_DROP:
.................do what ever when dropped...
}
вот то, что я делаю на touchlistener, чтобы окунуться и опустить:
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
/*
* Drag details: we only need default behavior
* - clip data could be set to pass data as part of drag
* - shadow can be tailored
*/
view.setTag("option"+index);
ClipData data = ClipData.newPlainText("tag", "option"+index);
shadowBuilder = new View.DragShadowBuilder(view);
//start dragging the item touched
view.startDrag(data, shadowBuilder, view, 0);
offsetX = (int)view.getX();//(int)motionEvent.getX();
offsetY = (int)view.getY();//motionEvent.getY();
Log.v("here","it is ::" + (int)motionEvent.getX() + " , "+(int)motionEvent.getY());
return false;
}
Теперь он создает теневой конструктор, который перетаскивается туда, куда вы перетаскиваете палец. Теперь, как я мог анимировать теневой застройщик или представление, возвращающееся к своей позиции, когда оно не попало в цель. Я попробовал public boolean onInterceptTouchEvent (событие MotionEvent) и перешел к родительскому представлению и взял положение x, y и оживил его, чтобы вернуться в исходное положение, но он отменяет действие. Есть ли способ получить координаты x, y в месте, где вид был опущен другим, чем цель. Тогда я смог бы оживить его между позициями. Спасибо заранее