1

特定のベースのクラスを使用してコンテンツを描画することで、クラスにDrawable基づいてアニメーションを作成しようとしています。ShapeDrawableShape

必要に応じて、ベースクラスの一部の値をShape変更する必要があり、これらの値に応じて変更する必要があります(あるスケールでの温度変化など)。すべてがAndroid2.1用に書かれています。私の呼びかけは大丈夫だと思いましたが、私はそれを提供invalidateSelf()しなければなりません。ShapeDrawableDrawable.Callback

そして問題は、インターフェースのinvalidateDrawable( Drawable who )メソッドで何を提供する必要があるかということです。Drawable.Callbackそのようなアプローチを使用するいくつかのサンプル:

class MyShapeDrawable extends ShapeDrawable implements Drawable.Callback
{
    public void invalidateDrawable( Drawable who ) {
    }

    public void scheduleDrawable(Drawable who, Runnable what, long when) {
    }

    public void unscheduleDrawable(Drawable who, Runnable what) {
    }
}

ベースのクラスメソッドを呼び出すと呼び出さinvalidateSelf()れますが、このメソッドで何をする必要がありますか?強制的に更新して再描画するにはどうすればよいですか?ShapeDrawableinvalidateDrawable()Shape

4

1 に答える 1

0

これは、View.java の Android ソースでの実装です...

public void invalidateDrawable(Drawable drawable) {
    if (verifyDrawable(drawable)) {
        final Rect dirty = drawable.getBounds();
        final int scrollX = mScrollX;
        final int scrollY = mScrollY;

        invalidate(dirty.left + scrollX, dirty.top + scrollY,
                dirty.right + scrollX, dirty.bottom + scrollY);
    }
}
于 2012-06-07T22:44:54.300 に答える