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

散文:

隐藏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,制作一两个动画,然后再次显示? (仅供参考:我正在扩展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);

08-27 17:56
查看更多