如何根据自定义布局中的另一个View动画更改View的可见性?

时间:2012-11-16 22:25:42

标签: android

我创建了一个名为WheelLayout的自定义RelativeLayout,它包含两个ImageView。第一个View,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 是自定义布局的子项,并且它运行良好。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

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

试试这个

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