Dzięki nowemu interfejsowi API animacji, który został wprowadzony w systemie Android 3.0 (Honeycomb), tworzenie takich animacji jest bardzo proste.
Przesuwanie w View
dół o odległość:
view.animate().translationY(distance);
Możesz później przesunąć View
tył do pierwotnej pozycji, tak jak to:
view.animate().translationY(0);
Możesz także łatwo łączyć wiele animacji. Poniższa animacja przesunie w View
dół o jego wysokość i jednocześnie pojawi się:
// 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);
Następnie możesz wyciszyć View
tył i przesunąć go z powrotem do pierwotnej pozycji. Ustawiamy również AnimatorListener
, abyśmy mogli ustawić widoczność View
tyłu GONE
po zakończeniu animacji:
view.animate()
.translationY(0)
.alpha(0.0f)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
view.setVisibility(View.GONE);
}
});
View
kiedy ustawiona jest jego widocznośćView.GONE
? Jeśli ustawisz widoczność na cokolwiek pozaView.VISIBLE
tym,View
ikona nie będzie widoczna. Nie rozumiem o co pytasz. Jeśli chcesz, aby animacja być widoczne wtedy nie ustawić widocznośćView
doView.GONE
.onAnimationEnd
jest wywoływany za każdym razem, aby uzyskać wielokrotnie występującą animację, co oznacza, żeonAnimationEnd
jest wywoływany również wtedy, gdy widok zostanie wyświetlony, co ustawia jego widoczność na Gone itp.Miałem problemy ze zrozumieniem zastosowania zaakceptowanej odpowiedzi. Potrzebowałem trochę więcej kontekstu. Teraz, gdy to rozgryzłem, oto pełny przykład:
MainActivity.java
activity_mail.xml
Notatki
INVISIBLE
.INVISIBLE
. Jeśli jednak nie animujesz całkowicie poza ekranem, możesz dodać animację alfa i ustawić widoczność za pomocąAnimatorListenerAdapter
.źródło
.setVisibility(View.INVISIBLE);
funkcji przesuwania nie będzie działać zgodnie z oczekiwaniami wizualnymi.Translate Animation
przesuwa widok. Jeśli chcesz animować widok tak, jak samo skalowanie, użyjScaleAnimation anim = new ScaleAnimation(1, 1, 0, 1)
Teraz należy wykonać animacje zmiany widoczności, za pośrednictwem
Transition API
których dostępne są w pakiecie wsparcia (androidx). Wystarczy wywołać metodę TransitionManager.beginDelayedTransition z przejściem slajdów, a następnie zmienić widoczność widoku.Activity_main.xml
Sprawdź tę odpowiedź, używając innych domyślnych i niestandardowych przykładów przejścia.
źródło
minSdkVersion 21
androidx
pakietu. Działa dobrze na interfejsach API w wersji wcześniejszej niż 21.Najłatwiejsze rozwiązanie: ustaw
android:animateLayoutChanges="true"
na pojemniku z widokami.Aby umieścić go w pewnym kontekście: Jeśli masz układ taki jak poniżej, wszystkie zmiany widoczności widoków w tym kontenerze będą animowane automatycznie.
Więcej informacji na ten temat można znaleźć w temacie Animowanie zmian układu - programista Androida
źródło
Możesz rozpocząć poprawne
Animation
wyświetlanie widocznościLinearLayout
zmian, tworząc nową podklasęLinearLayout
i zastępując,setVisibility()
aby rozpocząćAnimations
. Rozważ coś takiego:źródło
View
odpowiedzialny za swoje własne animacje, które NIGDY nie są potrzebne. Wyobraź sobie, że chceszView
inaczej animować w innej części swojej aplikacji. Co wtedy robisz Dodać flagę, aby nie animować automatycznie widoczności? PodklasowaćView
i zastępować,setVisibility()
aby usunąć animację? A może jeszcze gorzejsetVisibility()
z inną animacją? Z tego miejsca robi się coraz gorzej. Nie używaj tego „rozwiązania”.Kotlin
Na podstawie Suragch „s odpowiedź , tutaj jest elegancki sposób za pomocą Zobacz rozszerzenie:
A potem, gdziekolwiek chcesz go użyć, potrzebujesz tylko
myView.slideUp()
lubmyView.slideDown()
źródło
źródło
setAlpha
?możesz przesuwać w górę i w dół dowolnego widoku lub układu za pomocą poniższego kodu w aplikacji na Androida
źródło
Użyj tej klasy:
źródło
Korzystanie z ObjectAnimator
źródło
0.toFloat()
może też być0f
Miałem skrzynkę narożną, w której wysokość mojego widoku była wciąż
zero
taka ...źródło
Oto moje rozwiązanie. Po prostu uzyskaj odniesienie do swojego widoku i wywołaj tę metodę:
Nie musisz nic więcej robić =)
źródło
Odpowiedź Suragcha w Kotlinie. To zadziałało dla mnie.
}
źródło
Możesz użyć prostych trzech wierszy kodu, aby wyświetlić animację ...
źródło
Z rozszerzeniami Kotlin możesz użyć tego:
Przykład rozszerzenia:
źródło
Jeden z prostych sposobów:
źródło