隐藏动作条(定时)和动画视图(Hiding ActionBar (Timed) and Animat

2019-10-19 09:46发布

这基本上是我希望发生的事情:

在散文:

隐藏ActionBar 。 然后做一些动画(S)。 等待一点点。 显示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 ,做一个动画或两个,然后再次显示它? (供参考:我在延伸的一类运行此Fragment ,而不是一个Activity 。)

Answer 1:

使用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);


文章来源: Hiding ActionBar (Timed) and Animating Views