1

我创建了一个名为 WheelLayout 的自定义 RelativeLayout,其中包含两个 ImageView。第一个视图 WheelView 是一个自定义视图,它会调用 RotateAnimation 几次。

WheelView 有一个名为 WheelListener 的自定义接口。

 public interface WheelListener {
    public void wheelStarted();
    public void wheelStoppedOnSlice(int sliceNum);
 } 

在 WheelView 中,我实现 Animation.AnimationListener 如下:

@Override
public void onAnimationStart(Animation animation) {
    mListener.wheelStarted();
}

@Override
public void onAnimationEnd(Animation animation) {
        mListener.wheelStoppedOnSlice(mCurrentSlice);
}

@Override
public void onAnimationRepeat(Animation animation) {
}

其中 mListener 是 WheelListener。

WheelLayout 像这样实现 WheelListener:

@Override
public void wheelStarted() {
   mSliceImage.setVisibility(View.GONE);
}

@Override
public void wheelStoppedOnSlice(int sliceNum) {
    mSliceImage.setBackgroundResource(mSlices[sliceNum]);
    mSliceImage.setVisibility(View.VISIBLE);
}

当 WheelView 动画时,我希望看到 mSliceImage 消失并且 WheelView 继续其动画完成。相反,两者都不会发生。我的 WheelView 没有动画并且 mSliceImage 没有消失。

但是,在动画完成后,我确实看到 mSliceImage 更改了它的背景资源。

我也尝试了同样的事情,其中​​ mSliceImage不是自定义布局的孩子,并且效果很好。

有没有人有任何想法?

4

1 回答 1

0

问题是你使用“View.GONE”。你应该使用“View.INVISIBLE”

尝试这个

 @Override
  public void wheelStarted() {
     mSliceImage.setVisibility(View.INVISIBLE);
  }
于 2012-11-17T09:09:11.773 回答