2017-09-27 196 views
0

我试图将自定义背景绘制到扩展了LinearLayout的CustomView中。在画布上绘制自定义背景的问题(Android)

这里是我的onDraw()方法:

int mPositionX = 0; 
int mPositionY = 0; 
final int viewWidth = getMeasuredWidth(); 
final int viewHeight = getMeasuredHeight(); 

mPath.moveTo(mPositionX, mPositionY); 
mPositionX = viewWidth; 
mPath.lineTo(mPositionX, mPositionY); 
mPositionY = viewHeight; 
mPath.lineTo(mPositionX, mPositionY); 

//draw bottom triangles 
for(int i = 0; mPositionX >= 0; i++){ 
    mPositionX -= HALF_BORDER_STEP; 
    mPositionY = i%2 == 0 ? mPositionY - BORDER_HEIGHT : mPositionY + BORDER_HEIGHT; 
    mPath.lineTo(mPositionX, mPositionY); 
} 

// move to left bottom corner 
mPositionX = 0; 
mPath.lineTo(mPositionX,mPositionY); 
mPath.close(); 

canvas.clipPath(mPath); 
canvas.drawPath(mPath, mCheckPaint); 
super.draw(canvas); 

我有2个问题。

首先我的自定义背景不显示,如果我不会设置任何背景,所以我在我的xml中做了android:background =“@ color/transparent”。

第二个问题是,在我通过.addView(View view)添加了一些视图后,我的背景消失了。

我曾尝试致电invalidate()但仍然没有。

我做错了什么?

回答

0

为了解决我的问题,我应该添加setWillNotDraw(false);这意味着我的视图自行绘制。 Android Dev Docs.之后,我错过了另一个调用方法:mPath.reset();,然后在我的onDraw(Canvas canvas);中重新绘制。就是这样。