Arrastrar y soltar con onDraglistener animar para volver a la posición original si no se deja caer en el objetivo
Estoy haciendo una aplicación de juego donde necesito utilizar ondraglistener para arrastrar y soltar aquí lo que estoy haciendo en una clase que implementa 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... }
Aquí lo que estoy haciendo en touchlistener de una vista para ser arrastrado y cayó:
- Cómo convertir la ubicación de toque de View en la ubicación de la pantalla HTML de WebView
- Cómo escribir un InputStream potencialmente enorme para el archivo?
- ¿Cómo obtener el formato de fecha seleccionado por el usuario en Android?
- Cómo hacer Drag & Drop Button en Android
- Cómo obtener las coordenadas X, Y correctas de un DragEvent.ACTION_DROP
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; }
Ahora construye el constructor de sombras que se arrastran a cualquier lugar que arrastre dedo. Ahora cómo podría animar el constructor de la sombra o la opinión que vuelve a su posición cuando no caído a la blanco. Intenté boolean público onInterceptTouchEvent (evento de MotionEvent) y moviéndose a la vista del padre y tomando la posición de x, y animándola para volver a su posición original pero consigue la acción cancelada. ¿Hay alguna forma de obtener x, y coordenadas a un lugar de la vista se redujo a continuación, el objetivo. Entonces sería capaz de animarlo entre las posiciones. Gracias de antemano
- ¿Cómo transformar currentTimeMillis a un formato de fecha legible?
- Drag n drop textview en android
- Cómo reproducir el archivo de audio Mp3 desde el servidor
- ¿Cómo obtener el comportamiento de pantalla de inicio de arrastrar a bin, en mi propia aplicación?
- Hacer un lienzo transparente no transparente (tratando de sustituir el aspecto predeterminado de DragShadow con arrastrar y soltar en Android)
- Cómo arrastrar varias vistas de botón en java
- Android: realizar arrastrar y soltar mediante programación
- Android: Problema de arrastrar y soltar
Usted necesita manejar la gota:
switch (event.getAction()) { case DragEvent.ACTION_DRAG_ENTERED: //break here was removed in purpose so you can see the shadow and the element is still at its initial place. case DragEvent.ACTION_DROP: View view = (View) event.getLocalState(); if (prioritiesList.contains(v)) { ViewGroup viewgroup = (ViewGroup) view.getParent(); viewgroup.removeView(view); LinearLayout containView = (LinearLayout) v; containView.addView(view); view.setVisibility(View.VISIBLE); break; }
- Ajustar el fondo de AppWidget para un widget afecta a otros también
- Fragment.onCreateView tiene un contenedor nulo