我创建了一个扩展Drawable
的自定义类。我正在尝试通过使用onSizeChanged()
来获取Drawable的尺寸,如下所示
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的回答。若要获取可绘制对象附加到的布局的尺寸,请使用以下代码
@Override
protected void onBoundsChange(Rect bounds) {
mHeight = bounds.height();
mWidth = bounds.width();
}
最佳答案
如果我们去查看source code并在Drawable source code中,我们将看到以下内容:
如果我们传递的值不为null,则在View.setBackgroundDrawable(Drawable)中,将更新字段mBackground
(负责存储背景可绘制对象)。
如果我们尝试查找方法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
回调用于您的任务。关于java - 在Drawable类中使用onSizeChanged,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39525352/