画布没有绘制我需要的对象

时间:2015-09-18 19:35:57

标签: java android android-canvas

在loadpng块中编程到达....它还会打印吐司"它会画出一些东西,但它不会绘制圆圈,而是绘制我的arraylist中所有剩余的东西"

@Override
public void onDraw(Canvas canvas) {
    canvas.drawColor(Color.WHITE);
    int p=0,cir=0,r=0,l=0;
    if(load_png)
    {
        Toast_Display.long_message(getContext(),"should draw something");
        canvas.drawCircle(300,300,100,get_paint(Color.WHITE,10));
        invalidate();

    }

    for(int sequence : sequence_draw)
    {
        if(sequence==1)
        {
            int color = color_name.get(p);
            int width = brush_width.get(p);
            Path mypath = path_list.get(p);
            Paint paint = get_paint(color,width);
            canvas.drawPath(mypath, paint);
            p++;
        }
        else if(sequence==2)
        {
            circle c = circles.get(cir);
            canvas.drawCircle(c.getCx(),c.getCy(),c.getRadious(),get_paint2(c.getColor(),c.getWidth()));
            cir++;
        }
        else if(sequence==3)
        {
            Rectangle rec = rectangles.get(r);
            canvas.drawRect(rec.getCx(),rec.getCy(),rec.getDx(),rec.getDy(),get_paint2(rec.getColor(),rec.getWidth()));
            r++;
        }
        else if(sequence==4)
        {
            Rectangle line = lines.get(l);
            canvas.drawLine(line.getCx(),line.getCy(),line.getDx(),line.getDy(),get_paint(line.getColor(),line.getWidth()));
            l++;
        }

    }

    if(draw==true)
    {
        if(status.equals("circle"))
            canvas.drawCircle(cx,cy,radious,get_paint2(current_circle_color,current_circle_width));
        else if(status.equals("rec"))
            canvas.drawRect(cx,cy,dx,dy,get_paint2(current_Rectngle_color,current_Rectngle_width));
        else if(status.equals("line"))
            canvas.drawLine(cx,cy,dx,dy,get_paint(current_line_color,current_line_width));
    }


}

我不知道为什么它没有在load png block中绘制我需要的对象....任何帮助都将不胜感激

1 个答案:

答案 0 :(得分:0)

尝试删除invalidate()电话。在invalidate()内调用onDraw()是没有意义的,因为它是无效的,导致首先调用oDraw()

您在onDraw()中调用它的事实可能导致Android做出意想不到的事情。