我正在使用进度条和动画。
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 回调并将其设置为该动画。