ProgressBar持续时间和hasEnded方法

时间:2014-02-03 08:22:15

标签: java android

我正在使用进度条和动画。

        progressBar = (ProgressBar)findViewById(R.id.progressBar1);
        Animation animation = new RotateAnimation(30, 180);
        progressBar.setAnimation(animation);

在我的方法中进一步向下

设置此动画的持续时间

progressBar.getAnimation().setDuration(3000);

所以3秒钟,动画将会运行。

如果我想在动画结束后隐藏ProgressBar,我必须执行以下操作

if(progressBar.getAnimation().getDuration() == 3000){
            progressBar.setVisibility(ProgressBar.GONE);
        }

我尝试做的是

if(progressBar.getAnimation.hasEnded()){
 progressBar.setVisibility(ProgressBar.GONE);
}

这不起作用

有人可以解释为什么hasEnded方法似乎没有返回true我认为应该的位置。

2 个答案:

答案 0 :(得分:1)

我认为问题在下面......

if(progressBar.getAnimation.hasEnded()) {

它应该是......

if(progressBar.getAnimation().hasEnded()) { 

编辑::

那是因为你正在开始动画并立即检查动画是否已经结束,这是值得怀疑的,除非它根本不做任何事情。你想要做的是实现一个AnimationListener回调并将其设置为该动画。

答案 1 :(得分:1)

您可以在动画对象上调用动画侦听器。监听器调用树方法,其中一个是onAnimationEnd()。

animation.setAnimationListener(new AnimationListener() {
       @Override
       public void onAnimationStart(Animation anim) {
       };
       @Override
       public void onAnimationRepeat(Animation anim) {
       };
       @Override
       public void onAnimationEnd(Animation anim)  {
          // here your logic                 
       };
});