0

surfaceView を作成し、アルファ フェードインおよびフェードアウト アニメーションを追加しましたが、アニメーション化されないようです。

ここに私のアニメーションコードがあります:

fadeOut = new AlphaAnimation(1.0f, 0.0f);
        fadeOut.setInterpolator(new AccelerateInterpolator());
        fadeOut.setDuration(1000);

        fadeIn = new AlphaAnimation(0.0f, 1.0f);
        fadeIn.setInterpolator(new AccelerateDecelerateInterpolator());
        fadeIn.setDuration(1000);
animation = new AnimationSet(false); 
        animation.addAnimation(fadeIn);
        animation.addAnimation(fadeOut);

        //this.setAnimation(animation);
        animation.setRepeatCount(Animation.INFINITE);
        animation.setRepeatMode(Animation.REVERSE);

onDraw メソッド内で、これを呼び出すだけです

super.onDraw(canvas);
    this.startAnimation(animation);

助言がありますか?

ありがとう

4

2 に答える 2

1

Android ICS (v4)は、アニメーションをサポートするTextureViewを追加しました

SurfaceView のコンテンツはアプリケーションのウィンドウに存在しないため、効率的に変換 (移動、スケーリング、回転) することはできません。これにより、ListView または ScrollView 内で SurfaceView を使用することが難しくなります。また、SurfaceView は、フェード エッジや View.setAlpha() などの UI ツールキットの一部の機能と適切に対話できません。

これらの問題を解決するために、Android 4.0 では、ハードウェア アクセラレーションによる 2D レンダリング パイプラインと SurfaceTexture に依存する TextureView という新しいウィジェットが導入されています。TextureView は SurfaceView と同じ機能を提供しますが、SurfaceView とは異なり、通常のビューとして動作します。たとえば、TextureView を使用して、OpenGL シーンまたはビデオ ストリームを表示できます。TextureView 自体は、アニメーション化、スクロールなどを行うことができます。

于 2013-08-29T12:33:55.117 に答える