2016-09-16 54 views
1

我创建了一个扩展Drawable的自定义类。我试图用onSizeChanged()获得可绘制的尺寸遵循在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这个答案。为了获得该绘制连接到布局的尺寸,使用下面的代码

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

Drawable类中没有这样的方法。 –

+0

你能解释一下,你想达到什么目的? –

+0

我想获取可绘制连接的视图的长度和宽度 – Confuse

回答

1

如果我们去查看source code和可绘制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回调是接受你的任务。

相关问题