Faites glisser et déposez avec onDraglistener animé pour revenir à la position d'origine si elle n'est pas tombée sur la cible

Je fais une application de jeu où j'ai besoin d'utiliser ondraglistener pour faire glisser et déposer ici ce que je fais sur une classe qui implémente 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... } 

Voici ce que je fais sur touchlistener d'une vue à faire et à supprimer:

  • Le sélecteur ne fonctionne pas avec la mise en page et la vue d'image
  • Comment: définir un élément de thème (style) pour un widget personnalisé
  • ADB push -p Détateur de fichier incorrect
  • Comment enregistrer l'état lors de la modification d'orientation dans Android si l'état est constitué de mes classes?
  • Impossible de désactiver l'application de production dans Google Play Developer Console en faveur de la bêta
  • Android: AsyncTask recommandations: classe privée ou classe publique?
  •  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; } 

    Maintenant, il construit le générateur d'ombre qui se traîne partout où vous faites glisser le doigt. Maintenant, comment puis-je animer le générateur d'ombre ou la vue revenant à sa position quand elle n'est pas tombée sur la cible. J'ai essayé le boolean public sur InterceptTouchEvent (événement MotionEvent) et monter à la vue parentale et prendre la position x, y et l'animer pour revenir à sa position d'origine, mais elle se déclenche. Existe-t-il un moyen d'obtenir des coordonnées x, y vers un endroit où la vue a chuté autre que la cible. Ensuite, je pourrais l'animer entre les positions. Merci d'avance

  • Vérification de LicenseCheckAccess fuites ServiceConnection
  • Impossible de remplacer la méthode onPostExecute () dans AsyncTask Class ou de la déclencher
  • Android - UI pour le texte enveloppe une image
  • Comment dessiner des directions routières entre deux géocodes dans Android google map v2?
  • Comment calculer le compte / pourcentage "Active Installs" dans Android "Developer Console"?
  • Grande quantité de constantes en Java
  • One Solution collect form web for “Faites glisser et déposez avec onDraglistener animé pour revenir à la position d'origine si elle n'est pas tombée sur la cible”

    Vous devez gérer la baisse:

     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; } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.