画布不会画出

时间:2016-06-01 21:09:05

标签: android android-canvas

我没有得到它,我有其他自定义视图,我可以完美地绘制到画布。但是现在我创造的新观点根本没有画到画布上!我在当时和现在所做的事情之间找不到任何可辨别的区别,它仍然是相同的" canvas.drawLine()"打电话给他们。

这是一个示例视图,无论我尝试用它做什么都不会绘制(注意背景是黑色的,所以白色应该显示)

public class TestView extends View {

    public TestView(Context context)
    {
        super(context);
    }

    public TestView (Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    public void onDraw(Canvas canvas){
        Paint paint = new Paint();
        paint.setColor(0xFFFFFF);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeWidth(4);

        canvas.drawLine(0,0, 500, 500, paint);
        canvas.drawCircle(0,0, 40, paint);
        Logy.Print("Drew top:" + getTop() + " left:" + getLeft() + " right:" + getRight() + " bottom:" + getBottom());
    }

}

我看过其他类似的问题,我遇到的这个问题绝对不像其他问题。我没有误解onDraw,onDraw被调用(我可以通过Logy告诉,这只是Debug.log()的一个更简单的外观)。请在将此标记为其他内容的副本之前考虑这一点。

调用onDraw时视图的尺寸为0,0,800,800(左,上,右,下)。活动开始时,onDraw至少被调用一次。 canvas.drawRGB()将使用颜色填充视图。

这个视图是活动中唯一的视图,当我把另一个视图放在"工作"在它的自定义视图中绘制得很好。但现在任何新的自定义视图我试图绘制DON' T DRAW。

3 个答案:

答案 0 :(得分:1)

您正在使用的颜色具有 alpha值0 (又名透明)和白色。尝试使用use paint.setColor(0xFFFF3432);绘图或类似可能与背景形成对比的东西 - 看看你是否看到一条红线,你知道它有效。

然后选择您想要的颜色。如果是白色,请确保使用0xFFFFFFFF而不是0xFFFFFF

颜色格式:

0xAARRGGBB

其中A = Alpha /透明度,R =红色,G =绿色,B =蓝色。

答案 1 :(得分:0)

您没有覆盖onDraw方法。 试试这个

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    //your stuff here
}

答案 2 :(得分:0)

假设您为视图提供了正确的宽度和高度,看起来您的绘图工作正常。但是,您的活动背景可能是白色的,而您绘制的线条也是白色/透明的 - 导致妄想。

尝试将油漆颜色更改为:

paint.setColor(Color.Red);