我创建了一个扩展Drawable
的自定义类。我正在尝试使用onSizeChanged()
按照
public class Circle extends Drawable {
...
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld) {
super.onSizeChanged(xNew, yNew, xOld, yOld);
}
}
但是我收到一条错误,说“方法不会覆盖超类”。我该怎么做才能解决它?
非常感谢Michael Spitsin这个答案。要获取drawable附加到的布局的尺寸,请使用以下代码
@Override
protected void onBoundsChange(Rect bounds) {
mHeight = bounds.height();
mWidth = bounds.width();
}
答案 0 :(得分:1)
如果我们转到查看source code和Drawable source code,我们会看到下一步:
在View.setBackgroundDrawable(Drawable)中,如果我们传递非null,则更新字段mBackground
(负责存储背景drawable)。
如果我们尝试查找方法Drawable.onBoundsChanged()
的用法,那么我们将看到它主要用于Drawable.setBounds
方法。如果我们找到它的用法,我们将在View.class中看到下一个片段:
private void drawBackground(Canvas canvas) {
final Drawable background = mBackground;
if (background == null) {
return;
}
if (mBackgroundSizeChanged) {
background.setBounds(0, 0, mRight - mLeft, mBottom - mTop);
mBackgroundSizeChanged = false;
rebuildOutline();
}
//draw background through background.draw(canvas)
}
因此,您的任务可以使用onBoundsChanged
回调。