2 つの ImageView を含む WheelLayout というカスタム RelativeLayout を作成しました。最初のビューである 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 がカスタム レイアウトの子ではない場合にも同じことを試してみましたが、完全に機能しました。
誰にもアイデアはありますか?