【问题标题】:Problems with drawing custom background on Canvas (Android)在 Canvas (Android) 上绘制自定义背景的问题
【发布时间】:2017-09-27 16:34:34
【问题描述】:

我正在尝试为扩展 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(),但还是没有。

我做错了什么?

【问题讨论】:

    标签: java android canvas background android-custom-view


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多