2017-07-19 8 views
0

Image showing intended resultdrag stop Android sur écran à partir du point central de vue

Y at-il un moyen d'arrêter le point central d'une vue de glisser hors de l'écran à l'aide événements de déplacement OnTouch?

Je peux détecter le point, mais j'ai besoin de la logique pour arrêter la vue en mouvement, puis en rejoignant la traînée lorsque l'utilisateur fait un mouvement vers l'arrière. Définir un booléen désactivera les événements de déplacement qui ne sont pas bons, et remettre la vue à un bon point connu est nerveux.

Il n'y a pas de réponse nulle part sur ce donc je me demande s'il est même possible ...

Répondre

0

Vous pouvez l'utiliser pour faire votre point de vue restreint aux limites de l'écran.

int width=v.getLayoutParams().width;; 
    int height=v.getLayoutParams().height; 
    switch (event.getAction()) { 

     case MotionEvent.ACTION_DOWN: 

      dX = v.getX() - event.getRawX(); 
      dY = v.getY() - event.getRawY(); 

      return true; 

     case MotionEvent.ACTION_MOVE: 

      if (width == windowWidth && height == windowHeight){} 
      else { 
       v.animate() 
         .x(event.getRawX() + dX) 
         .y(event.getRawY() + dY) 
         .setDuration(0) 
         .start(); 

       if (event.getRawX() + dX + width > windowWidth) { 
        v.animate() 
          .x(windowWidth - width) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawX() + dX < 0) { 
        v.animate() 
          .x(0) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY + height > windowHeight) { 
        v.animate() 
          .y(windowHeight - height) 
          .setDuration(0) 
          .start(); 
       } 
       if (event.getRawY() + dY < 0) { 
        v.animate() 
          .y(0) 
          .setDuration(0) 
          .start(); 
       } 

       return true; 
      } 

où v est la vue onTouchListener

+0

Ceci est à mi-chemin là quand mis en œuvre avec mon code mais la vue ne se déplace vers le bas et à droite. J'en ai besoin pour bouger en haut et à gauche aussi, des idées pour l'adapter ou où je vais mal? –

+0

s'il vous plaît télécharger le code complet ici que vous utilisez pour déplacer, parce que ce code fonctionne parfaitement pour moi. – Anmol

+0

Ok, vous avez raison, votre code est bon. J'ai créé une vue personnalisée qui définit quelques dimensions ainsi que le déplacement de la mise en page lors de la création. C'est pourquoi rien ne fonctionne bien pour moi, mais après beaucoup d'essais et d'erreurs sur les marges mobiles, je suis finalement arrivé là où je devais être. Merci Anmol pour votre aide, c'est très apprécié! –