Mit der neuen Animations-API, die in Android 3.0 (Honeycomb) eingeführt wurde, ist es sehr einfach, solche Animationen zu erstellen.
Um eine View
Strecke nach unten rutschen:
view.animate().translationY(distance);
Sie können den View
Rücken später wie folgt in seine ursprüngliche Position schieben :
view.animate().translationY(0);
Sie können auch problemlos mehrere Animationen kombinieren. Die folgende Animation schiebt ein View
Bild um seine Höhe nach unten und blendet es gleichzeitig ein:
// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);
// Start the animation
view.animate()
.translationY(view.getHeight())
.alpha(1.0f)
.setListener(null);
Sie können den View
Rücken dann ausblenden und in seine ursprüngliche Position zurückschieben. Wir stellen auch ein ein, AnimatorListener
damit wir die Sichtbarkeit des View
Rückens auf einstellen können , GONE
sobald die Animation beendet ist:
view.animate()
.translationY(0)
.alpha(0.0f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setVisibility(View.GONE);
}
});
View
wenn seine Sichtbarkeit eingestellt istView.GONE
? Wenn Sie die Sichtbarkeit auf etwas gesetzt außerView.VISIBLE
dann dieView
nicht sichtbar sein wird . Ich verstehe nicht, was Sie fragen. Wenn Sie möchten, dass Ihre Animation sichtbar ist, stellen Sie die Sichtbarkeit vonView
to nicht einView.GONE
.onAnimationEnd
jedes Mal für eine mehrfach auftretende Animation aufgerufen wird, was bedeutet, dass dies auchonAnimationEnd
aufgerufen wird, wenn die Ansicht angezeigt wird, wodurch ihre Sichtbarkeit auf Gone usw. gesetzt wirdIch hatte Probleme, die akzeptierte Antwort zu verstehen. Ich brauchte etwas mehr Kontext. Nachdem ich es herausgefunden habe, ist hier ein vollständiges Beispiel:
MainActivity.java
activity_mail.xml
Anmerkungen
INVISIBLE
.INVISIBLE
. Wenn Sie jedoch nicht vollständig außerhalb des Bildschirms animieren, können Sie eine Alpha-Animation hinzufügen und die Sichtbarkeit mit einem festlegenAnimatorListenerAdapter
.quelle
.setVisibility(View.INVISIBLE);
die Slide-Up-Funktion nicht wie visuell erwartet funktioniert.Translate Animation
verschiebt die Ansicht. Wenn Sie die Ansicht wie ihre Skalierung selbst animieren möchten, verwenden SieScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1)
Jetzt sollten Animationen zur Änderung der Sichtbarkeit durchgeführt werden, über
Transition API
die im Support-Paket (androidx) verfügbar ist. Rufen Sie einfach die TransitionManager.beginDelayedTransition- Methode mit Folienübergang auf und ändern Sie dann die Sichtbarkeit der Ansicht.activity_main.xml
Überprüfen Sie diese Antwort mit anderen Standard- und benutzerdefinierten Übergangsbeispielen.
quelle
show
soll sein? Ein Boolescher?minSdkVersion 21
androidx
Paket. Es funktioniert gut auf vor 21 API.Einfachste Lösung: einstellen
android:animateLayoutChanges="true"
den Container auf, der Ihre Ansichten enthält.Um es in einen Kontext zu setzen: Wenn Sie ein Layout wie das folgende haben, werden alle Sichtbarkeitsänderungen an den Ansichten in diesem Container automatisch animiert.
Weitere Informationen hierzu finden Sie unter Animieren von Layoutänderungen - Android Developer
quelle
Sie können das richtige starten
Animation
Sichtbarkeit derLinearLayout
Änderungen starten, indem Sie eine neue Unterklasse von erstellenLinearLayout
und überschreibensetVisibility()
, um die zu startenAnimations
. Betrachten Sie so etwas:quelle
View
Verantwortlichen für seine eigenen Animationen verantwortlich, was NIE das ist, was Sie wollen. Stellen Sie sich vor, Sie möchten dasView
in einem anderen Teil Ihrer App anders animieren . Was machst du dann? Eine Flagge hinzufügen, um die Sichtbarkeit nicht automatisch zu animieren? UnterklasseView
und überschreibensetVisibility()
, um die Animation zu entfernen? Oder noch schlimmersetVisibility()
mit einer anderen Animation umsetzen ? Von da an wird es immer hässlicher. Verwenden Sie diese "Lösung" nicht.Kotlin
Basierend auf Suragch ‚s Antwort , hier ist eine elegante Art und Weise anzeigen Erweiterung mit:
Und wo immer Sie es verwenden möchten, brauchen Sie nur
myView.slideUp()
odermyView.slideDown()
quelle
quelle
setAlpha
?Sie können jede Ansicht oder jedes Layout mithilfe des folgenden Codes in der Android-App nach oben und unten verschieben
quelle
Verwenden Sie diese Klasse:
quelle
Verwenden von ObjectAnimator
quelle
0.toFloat()
kann auch nur sein0f
Ich hatte einen Eckkoffer, in dem meine Ansicht immer noch
zero
so hoch war ...quelle
Hier ist meine Lösung. Holen Sie sich einfach einen Verweis auf Ihre Ansicht und rufen Sie diese Methode auf:
Keine Notwendigkeit, etwas anderes zu tun =)
quelle
Suragchs Antwort in Kotlin. Das hat bei mir funktioniert.
}}
quelle
Sie können die einfachen drei Codezeilen verwenden, um die Animation anzuzeigen ...
quelle
Mit Kotlin-Erweiterungen können Sie Folgendes verwenden:
Beispiel für die Erweiterung:
quelle
Eine der einfachen Möglichkeiten:
quelle