隐藏ActionBar(定时)和动画视图

时间:2014-02-22 04:55:37

标签: java android animation android-actionbar fragment

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

散文:

隐藏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

1 个答案:

答案 0 :(得分: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);