簡體   English   中英

在Canvas(Android)上繪制自定義背景時出現問題

[英]Problems with drawing custom background on Canvas (Android)

我正在嘗試將自定義背景繪制到擴展LinearLayout的CustomView中。

這是我的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);

我有兩個問題。

首先,如果我不設置任何背景,則不會顯示我的自定義背景,因此我在xml中執行了android:background =“ @ color / transparent”。

第二個問題是,當我通過.addView(View view)添加一些視圖后,我的背景消失了。

我試過調用invalidate()但還是沒有。

我做錯了什么?

為了解決我的問題,我應該添加setWillNotDraw(false); 這意味着我的視圖確實可以自己繪制。 Android開發文檔。 在此之后,我錯過了另一個方法調用: mPath.reset(); 就在我的onDraw(Canvas canvas);重新繪制之前onDraw(Canvas canvas); 而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM