Zmagałem się dzisiaj z animacją Dialog, w końcu udało mi się ją uruchomić przy użyciu stylów, więc oto przykład.
Na początek najważniejsza rzecz - prawdopodobnie miałem to dzisiaj działające na 5 różnych sposobów, ale nie mogłem powiedzieć, ponieważ ... Jeśli ustawienia animacji twojego urządzenia są ustawione na "Brak animacji" (Ustawienia → Wyświetlacz → Animacja), wtedy okna dialogowe wygrały nie bądź animowany bez względu na to, co robisz!
Poniżej znajduje się uproszczona wersja pliku my styles.xml. Mam nadzieję, że jest to oczywiste. Powinien znajdować się w res/values
.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="PauseDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item>
</style>
<style name="PauseDialogAnimation">
<item name="android:windowEnterAnimation">@anim/spin_in</item>
<item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
</style>
</resources>
Jest windowEnterAnimation
to jedna z moich animacji i znajduje się w res\anim
. Jest windowExitAnimation
to jedna z animacji, która jest częścią zestawu Android SDK.
Następnie, kiedy tworzę okno dialogowe w onCreateDialog(int id)
metodzie moich działań , wykonuję następujące czynności.
Dialog dialog = new Dialog(this, R.style.PauseDialog);
// Setting the title and layout for the dialog
dialog.setTitle(R.string.pause_menu_label);
dialog.setContentView(R.layout.pause_menu);
Alternatywnie możesz ustawić animacje w następujący sposób, zamiast używać konstruktora Dialog, który pobiera motyw.
Dialog dialog = new Dialog(this);
dialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation;