gpt4 book ai didi

java - 在 Drawable 类中使用 onSizeChanged

转载 作者:行者123 更新时间:2023-11-30 01:00:23 26 4
gpt4 key购买 nike

我创建了一个扩展 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);
}
}

但我收到一条错误消息,指出“方法不会从父类(super class)中覆盖”。我该怎么做才能修复它?


非常感谢 Michael Spitsin对于这个答案。要获取可绘制对象所附加的布局的尺寸,请使用以下代码

@Override
protected void onBoundsChange(Rect bounds) {
mHeight = bounds.height();
mWidth = bounds.width();
}

最佳答案

如果我们去查看source code在 Drawable 中 source code ,我们将看到接下来的事情:

在 View.setBackgroundDrawable(Drawable) 中,如果我们传递的不是 null,则更新字段 mBackground(负责存储背景可绘制对象)。

如果我们尝试查找方法 Drawable.onBoundsChanged() 的用法,那么我们会发现它主要用于 Drawable.setBounds 方法。如果我们找到它的用法,我们将在 View.class 中看到下一个 fragment :

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com