2015-10-17 22 views
0

與Android 6啓動drawOval方法似乎當油漆樣式設置爲Paint.Style.STROKE繪製一個矩形,而不是圓的。 如果油漆風格設置爲Paint.Style.FILL或FILL_AND_STROKE,一切似乎都很好。 看看它在下一張照片中的外觀。在Android 6.0 drawOval中繪製一個矩形,當油漆樣式設置爲Pain.Style.STROKE

Pre Android 6

預的Android 6

Android 6

的Android 6

綠色矩形被認爲是從標尺綠色圓圈

不e繪圖是以1.0f乘以1.0f尺寸的矩形制成的。 除了6.0以外的所有Android版本,一切正常。

謝謝

回答

1

我通過使用重新縮放畫布更大的矩形(100×100)的輔助功能進行管理,繪製圓和規模在畫布到原來的大小。

public static void drawOval(Canvas canvas, RectF rectangle, Paint paint, float scale) { 
    float originalStrokeWidth = paint.getStrokeWidth(); 
    float upScaling = 100f; 
    paint.setStrokeWidth(originalStrokeWidth * upScaling); 
    canvas.save(); 
    RectF newRect = new RectF(); 
    newRect.left = rectangle.left*upScaling; 
    newRect.top = rectangle.top*upScaling; 
    newRect.right = rectangle.right*upScaling; 
    newRect.bottom = rectangle.bottom*upScaling; 
    canvas.scale(scale/upScaling, scale/upScaling); 
    canvas.drawOval(newRect, paint); 
    canvas.restore(); 
    paint.setStrokeWidth(originalStrokeWidth); 
} 
public static void drawOval(Canvas canvas, RectF rectangle, Paint paint) { 
    drawOval(canvas, rectangle, paint, 1f); 
} 

所以,在這裏我不得不canvas.drawOval(RECT,油漆)我 CanvasUtils.drawOval(帆布,矩形,油漆)取代它;

我已經注意到,「錯誤」當我使用位圖作爲畫布繪製圖作爲計的背景下才會發生。