这基本上就是我想要发生的事情:
散文:
隐藏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
。
答案 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);