1

我正在尝试使用某些特定的基于类来绘制Drawable基于类的动画来绘制其内容。ShapeDrawableShape

Shape根据需要,应更改基于类中的某些值,并且应根据这些值进行更改(例如某种程度的温度变化)。整件事都是为 Android 2.1 编写的。我发现,我的呼唤invalidateSelf()应该ShapeDrawable没问题,但我必须提供Drawable.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()ShapeDrawable的基于类的invalidateDrawable()方法被调用,但是在这个方法中应该做什么呢?如何强制我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 回答