我正在使用进度条和动画。
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
我认为应该的位置。
答案 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
};
});