1

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 がカスタム レイアウトの子ではない場合にも同じことを試してみましたが、完全に機能しました。

誰にもアイデアはありますか?

4

1 に答える 1

0

問題は、「View.GONE」を使用することです。「View.INVISIBLE」を使用する必要があります

これを試して

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