drawLine()在其绘图区域之外绘制线条

时间:2014-07-26 03:35:28

标签: android android-canvas

Before Scrolling

After scrolling

Layout Overview

我有一个自定义的LinearLayout类,它会覆盖它的onDraw()方法。它进入ListView的每一行,如第三张图所示。在向上滚动列表视图之前,一切看起来都很棒。然后,从drawLine()调用渲染的虚线将通过位于ListView上方的LinearLayout绘制。这很奇怪,因为橙色圆角矩形没有出现这个问题。

我的自定义LinearLayout会调用" this.setWillNotDraw(false);"我试着调用" LinearLayout1.postinvalidate();"在ListView的onScrollListener中,它无法让顶部的LinearLayout重绘。我该怎么做才能防止线条在LinearLayout之上绘制?

1 个答案:

答案 0 :(得分:0)

必须采用以下解决方法:

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Bitmap offScreenBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas offScreenCanvas = new Canvas(offScreenBitmap);

    // do your drawings onto offScreenBitmap here

    Paint offScreenPaint = new Paint();
    offScreenPaint.setAntiAlias(true);
    offScreenPaint.setFilterBitmap(true);
    offScreenPaint.setDither(true);
    canvas.drawBitmap(offScreenBitmap,0,0,offScreenPaint);
}

我的代码实际上在开始时准备了offScreenBitmap,因为它的内容是静态的,只需要绘制一次。