我正在尝试编写基于ShapeDrawable类的动画Drawable,使用一些特定的基于Shape的类来绘制其内容。
根据需要,基于Shape的类中的一些值应该被更改,并且应该根据这些值进行更改(类似于一定范围内的温度变化)。整件事都是为Android 2.1编写的。我发现,为我的ShapeDrawable调用invalidateSelf()应该没问题,但我必须为它提供Drawable.Callback。
问题是,在Drawable.Callback接口的invalidateDrawable( Drawable who )方法中应该提供什么?使用这种方法的一些示例:
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) {
}
}当我为我的基于ShapeDrawable的类调用invalidateSelf()时,会调用invalidateDrawable()方法,但是在这个方法中应该做什么呢?如何强制更新和重绘我的Shape?
发布于 2012-06-08 06:44:54
这是View.java的安卓源代码中的实现。
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);
}
}https://stackoverflow.com/questions/10175038
复制相似问题