2016-04-30 15 views
0

Ich werde versuchen zu beschreiben, was ich will, desto genauer kann ich. Ich bin ziemlich sicher, dass es mit einer einfachen Animation gemacht werden kann, aber ich kann nicht wirklich die Wörter finden, um das Verhalten zu beschreiben, auf das ich warte.Android animieren Layout Bewegung

Ich zeige gerade eine LinearLayout mit zwei anderen LinearLayoutchilds. Die Schwerkraft des Elternteils ist auf center eingestellt.

Ich bin in der Lage, die erste Kind Sichtbarkeit von GONE zu VISIBLE und umgekehrt, wenn Sie auf eine Schaltfläche klicken.

Wenn das erste Kind layout zu GONE gesetzt und ich ändern Sie sich auf VISIBLE, wird es auf dem Bildschirm angezeigt und das second Kind auf den Boden bewegen, um Platz zu geben. (da die Schwerkraft in der Mitte liegt).

Das möchte ich animieren, wenn sich das zweite Kind nach oben/unten bewegt, um den ersten erscheinen/verschwinden zu lassen, also nicht sofort, sondern sanft. Hier

ist ein animiertes GIF, der die ganze Sache zeigt:

Gif

Antwort

1

Ich endlich gefunden, dass eine Animation auf meine Layouts angewendet werden kann, um ihre Bewegung zu animieren s:

LayoutTransition rpTransition = layout.getLayoutTransition(); 
    rpTransition.enableTransitionType(LayoutTransition.CHANGING); 

enter image description here

0

Dies ist, wie ich dies tun würde:

//in onCreate 
fadingView.setAlpha(0); 

... 

public void fadeThenSlide (final View fadingView, final View slidingView){ 
    slidingView.animate().translationYBy(fadingView.getHeight()). 
    setDuration(200). 
    setListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      super.onAnimationEnd(animation); 
      fadingView.animate().alpha(1).setDuration(200); 
     } 
    }); 
} 

Ich habe den Code nicht noch so dort getestet könnte einige Probleme, können Sie es versuchen und mir sagen

+0

Die Sache ist die, dass, wenn die FadingView zu VISIBLE Einstellung automatisch die slidingView bewegt. Wenn also die verblassende Animation endet, verschiebt sie die verschiebbare Ansicht, die bereits verschoben wurde ... – FrenchFalcon

+0

Vielleicht könnte ich versuchen, das LinearLayout durch RelativeLayout zu ersetzen, so dass nur Ihre Animation die Ansicht verschiebt – FrenchFalcon

+0

Nein, Sie müssen nichts ersetzen, einfach entfernen der Teil Ihres Codes, in dem Sie die Sichtbarkeit Ihres FadingView auf "Gone" ändern. –