进度条持续时间和已结束方法



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

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

在我的方法中,我

设置此动画的持续时间

progressBar.getAnimation().setDuration(3000);

因此,动画将运行 3 秒钟。

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

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

我尝试做的是

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

这不起作用

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

可以在动画对象上调用 set 一个动画侦听器。侦听器调用树方法,其中一个是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                 
};
}); 

我认为问题在下面...

if(progressBar.getAnimation.hasEnded()) {

应该是...

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

编辑::

这是因为您正在启动动画并立即检查动画是否已结束,除非它根本不执行任何操作,否则这是值得怀疑的。您要做的是实现一个 AnimationListener 回调并将其设置为该动画。

最新更新