2012-11-16 33 views
1

我创建了一个名为WheelLayout的自定义RelativeLayout,它包含两个ImageView。第一个View,WheelView是一个自定义View,它可以调用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是不是自定义布局的孩子,它的工作完美。

有没有人有任何想法?

回答

0

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

试试这个

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

View.INVISIBLE不会使我的mSliceImage消失,但允许我WheelView动画。我已经在那里放了一个Log调用,所以我知道这个函数被打了,但没有骰子。 –

相关问题