Android:在背景图像上绘制2D矩形

时间:2014-04-01 12:59:41

标签: android canvas drawing

我试图在Android项目上绘制2D矩形。它工作得很好,但唯一的问题是我在项目中使用了背景图像。 2D矩形不允许显示背景图像。例如,如果我在显示背景图像之前绘制矩形,背景将隐藏矩形。如果我首先显示背景然后绘制矩形,它将执行相同的操作,只有这次矩形将完全隐藏背景图像。

public class DrawView extends View
{
Paint paint = new Paint();
public DrawView(Context context)
{
    super(context);
}

@Override
public void onDraw(Canvas canvas)
{
    Paint paint = new Paint();
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    canvas.drawRect(30, 30, 80, 80, paint);
    paint.setColor(Color.CYAN);
    canvas.drawRect(33,  60, 77, 77, paint);
    paint.setColor(Color.YELLOW);
    canvas.drawRect(33,  33, 77, 60, paint);
    }
}

在主表格上:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    DrawView drawview = new DrawView(this);
    setContentView(drawview);
    setContentView(R.layout.activity_login);
}

2 个答案:

答案 0 :(得分:0)

尝试将super.onDraw()添加到您的onDraw()覆盖中,以便在您开始在其上绘制自定义元素之前执行查看onDraw()

@Override
public void onDraw(Canvas canvas)
{
   super.onDraw(canvas);

   Paint paint = new Paint();
   paint.setColor(Color.BLACK);
   paint.setStrokeWidth(3);
   canvas.drawRect(30, 30, 80, 80, paint);
   paint.setColor(Color.CYAN);
   canvas.drawRect(33,  60, 77, 77, paint);
   paint.setColor(Color.YELLOW);
   canvas.drawRect(33,  33, 77, 60, paint);
}

答案 1 :(得分:0)

我已经弄清楚了。剩下的就是改变矩形的位置。 添加以下内容:

addContentView(drawview, new LayoutParams(Width, Height));

删除setContentView()命令。