2017-07-19 1 views
0

Image showing intended resultAndroid Stop zieht aus dem Bildschirm vom Mittelpunkt der Ansicht

Gibt es eine Möglichkeit von Ziehen Sie den Bildschirm mit OnTouch Bewegungsereignissen des Mittelpunkt einer Ansicht zu stoppen?

Ich kann den Punkt erkennen, aber ich brauche die Logik, um die Ansicht zu stoppen, die sich bewegt und dann den Widerstand wieder verbindet, wenn der Benutzer rückwärts wischt. Wenn Sie einen booleschen Wert setzen, werden die Bewegungsereignisse deaktiviert, was nicht gut ist, und die Ansicht auf einen bekannten guten Punkt zurückzusetzen, ist nervös.

Es gibt keine Antworten überall auf diese so frage ich mich, ob es überhaupt möglich ist ...

Antwort

0

Hiermit können Sie Ihre Sicht auf die Grenzen des Bildschirms beschränkt machen.

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; 
      } 

wobei v die Ansicht in onTouchListener

+0

Die auf halbem Weg gibt, wenn umgesetzt bewegt sich mit meinem Code aber der Blick nur nach unten und nach rechts. Ich brauche es, um nach oben und nach links zu gehen, irgendwelche Ideen, wie man das anpasst oder wo ich falsch liege? –

+0

Bitte lade hier den vollen Code hoch, mit dem du dich bewegst, denn dieser Code funktioniert perfekt für mich. – Anmol

+0

Ok, du hast Recht, dein Code ist gut. Ich habe eine benutzerdefinierte Ansicht erstellt, die einige Dimensionen festlegt und das Layout bei der Erstellung verschiebt. Aus diesem Grund hat nichts gut für mich funktioniert, aber nach viel Versuch und Irrtum auf beweglichen Margen habe ich endlich dahin, wo ich sein muss. Vielen Dank Anmol für Ihre Hilfe, es ist sehr geschätzt! –

Verwandte Themen