Android-приложение SDK: исключить строку состояния из анимации перехода

Я следил за стандартным Google SDK для Google Android и пришел к тому, что я могу изменить параметры панели действий.

При открытии другого действия он появляется в виде анимации (fade-in + grow). Моя проблема заключается в том, что новая панель действий внутри этого действия появляется также вместе с анимацией (все это связано как один контейнер). Я хочу, чтобы панель действий сохранялась сверху, фиксировалась, в то время как только содержимое приложения всплывало. Когда содержимое панели действий меняется, оно должно просто меняться без какой-либо анимации. В качестве примера рассмотрим приложение Telegram.

Поскольку я следовал стандартным учебным пособиям, я предполагаю, что это поведение по умолчанию, поэтому, вероятно, обычно отключать его, но я не нашел для него рабочего решения нигде, поэтому я должен игнорировать некоторые очень простые настройки.

themes.xml:

...
<!-- ActionBar styles -->
...
1 ответ

Вы можете определить свои переходы следующим образом:

  • В файле fade.xml:

    <!--?xml version="1.0" encoding="utf-8"?-->
    <transitionset xmlns:android="http://schemas.android.com/apk/res/android"> <fade android:duration="500"> <targets> <!--excluding status bar--> <target android:excludeid="@android:id/statusBarBackground"> <!--excluding navigation bar--> <target android:excludeid="@android:id/navigationBarBackground"> <!--excluding toolbar bar--> <target android:excludeid="@id/toolbar" <="" targets=""> </target></target></target></targets></fade>
    </transitionset>

а затем установите его как:

Transition mFadeTransition = TransitionInflater.from(this). inflateTransition(R.transition.fade); getWindow().setEnterTransition(mFadeTransition);
  1. Или используя только java:

    Fade fade = new Fade();
    fade.setDuration(500);
    //exclude toolbar
    fade.excludeTarget(R.id.toolbar, true);
    //exclude status bar
    fade.excludeTarget(android.R.id.statusBarBackground, true);
    //exclude navigation bar
    fade.excludeTarget(android.R.id.navigationBarBackground, true);
    getWindow().setEnterTransition(fade);

licensed under cc by-sa 3.0 with attribution.