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