Скрытие ActionBar (по времени) и анимации представлений

1

Вот в основном то, что я хочу:

В прозе:

Скрыть ActionBar. Затем сделайте анимацию (ы). Подожди немного. Показать ActionBar снова.

В базовом коде:

ActionBar actionBar = getActivity().getActionBar();
actionBar.hide();

TextView someTextView = (TextView) rootView.findViewById(R.id.some_textview);
Animation a = AnimationUtils.loadAnimation(getActivity(), android.R.anim.slide_in_left);
int duration = 1000;
a.setDuration(duration);
someTextView.startAnimation(a);

wait(duration);

actionBar.show();

На самом деле:

Конечно, способ написания кода, он не работает, как я хочу. Я пробовал несколько решений, в том числе: (1) используя Thread.sleep, (2) создание новых Runnables, (3) создание двух экземпляров ActionBar (один для скрытия и один для показа), и, возможно, даже несколько методов, которые я больше не помню.

В общем, до сих пор, что произошло в результате, было либо (1) показывается ActionBar все время, (2) или вся программа ждет, отображается ActionBar, затем анимация воспроизводится, или (3) некоторая версия того же нестандартного запуска.

Итак, я думаю, мой вопрос:

Как скрыть ActionBar, сделать анимацию или две, а затем показать ее еще раз? (FYI: Я запускаю это в классе, который расширяет Fragment, а не Activity.)

Теги:
fragment
animation
android-actionbar

1 ответ

4
Лучший ответ

используйте AnimationListener. В конце Animation снова покажите ActionBar.

    animation.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // You can hide ActionBar here
            getActivity().getActionBar().hide();
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // getActivity().getActionBar().show();
            // and according to you, use Handler
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                    getActivity().getActionBar().show();
                }
            }, 3 * 1000);
        }
    });
    someTextView.startAnimation(animation);
  • 0
    Спасибо. Это выглядит действительно хорошо. Но как мне заставить его ждать некоторое время, прежде чем getActionBar().show() (т.е. не отображать ActionBar сразу)?
  • 0
    Да, скажем, например: после завершения анимации подождите 3 секунды, покажите ActionBar .
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню