Widziałem to pytanie:Czy istnieje sposób wyłączenia animacji pokazu/ukrywania ActionBar?
Changing the ActionBar hide animation?
Ale to nie mówi, czy to możliwe, aby wyłączyć animację w ogóle.
Widziałem to pytanie:Czy istnieje sposób wyłączenia animacji pokazu/ukrywania ActionBar?
Changing the ActionBar hide animation?
Ale to nie mówi, czy to możliwe, aby wyłączyć animację w ogóle.
Jeśli używasz ActionBarSherlock, możesz to zrobić. Zobacz klasę ActionBarImpl, ma metodę setShowHideAnimationEnabled (boolean enabled).
jak to zrobić w dziale sherlockbar? –
'com.actionbarsherlock.internal.app.ActionBarImpl' jest dzieckiem' com.actionbarsherlock.app.ActionBar' Czy możesz podać nam przykładowy format 'setShowHideAnimationEnabled (boolean)', proszę? –
Naprawiłem przy użyciu poniższego sposobu:
public static void disableShowHideAnimation(ActionBar actionBar) {
try
{
actionBar.getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(actionBar, false);
}
catch (Exception exception)
{
try {
Field mActionBarField = actionBar.getClass().getSuperclass().getDeclaredField("mActionBar");
mActionBarField.setAccessible(true);
Object icsActionBar = mActionBarField.get(actionBar);
Field mShowHideAnimationEnabledField = icsActionBar.getClass().getDeclaredField("mShowHideAnimationEnabled");
mShowHideAnimationEnabledField.setAccessible(true);
mShowHideAnimationEnabledField.set(icsActionBar,false);
Field mCurrentShowAnimField = icsActionBar.getClass().getDeclaredField("mCurrentShowAnim");
mCurrentShowAnimField.setAccessible(true);
mCurrentShowAnimField.set(icsActionBar,null);
}catch (Exception e){
//....
}
}
}
Dzięki! Działa jak urok. – IPv6
Korzystanie z prywatnych metod nie jest dobrym pomysłem, prawdopodobnie zepsuje się w przyszłości. Apple nie zezwala nawet aplikacjom używającym prywatnych metod w sklepie z aplikacjami. –
@ MilošČernernovovský Korzystanie z Androida to zły pomysł. Jest pełen błędów i ograniczeń. Ale nadal wolę hackować ten system operacyjny niż implementować rzeczy od zera –
Teraz można to zrobić,
getSupportActionBar().setShowHideAnimationEnabled(false);
Nie sądzę, że to możliwe, aby wyłączyć lub pominąć animacje, ponieważ są one ustalony. Możesz spróbować zmienić swój motyw aktywności na wariant "NoActionBar", jeśli w ogóle nie będziesz potrzebował paska akcji. – ebarrenechea
@ebarrenchea: Nie, naprawdę muszę ukryć i pokazać pasek akcji, a animacja wygląda niezręcznie. –
Niestety, jedyną opcją jest utworzenie własnej niestandardowej implementacji paska działań lub widoku podobnego do tego fragmentu/działania. – ebarrenechea