Вот в основном то, что я хочу:
В прозе:
Скрыть 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
.)
используйте 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);
getActionBar().show()
(т.е. не отображатьActionBar
сразу)?ActionBar
.