Nella mia app ho bisogno di disegnare cerchi usando bitmap e il metodo drawCircle().Android 6.0 gestisce in modo errato il metodo drawCircle
Tutto stava funzionando bene e esattamente come dovrebbe fino a Android 6.0.
Disegna ancora cerchi su tutte le versioni precedenti, ma disegna rettangoli quando uso l'app su 6.0. Ma se lo cambio da riempire, disegna un cerchio sia in api 22 che api 23. Qualcuno ha lo stesso problema o qualche idea del perché questo accada?
Ecco il codice sorgente e uno screenshot (app in esecuzione su API 23 a sinistra e API 22 a destra). same app on different api's
public final class Circle1View extends View {
private float xCenter, yCenter;
private Bitmap grid = null;
public Circle1View (Context context) {
super(context);
init();
}
private void init() {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
@Override
protected void onDraw(Canvas canvas) {
int w = getWidth();
int h = getHeight();
xCenter = w/2;
yCenter = h/2;
drawBitmaps(w, h);
canvas.translate(xCenter, yCenter);
canvas.scale(xCenter, yCenter);
canvas.drawBitmap(grid, null, new RectF(-1, -1, 1, 1), null);
}
private void drawBitmaps(int w, int h) {
grid = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas();
canvas.translate(xCenter, yCenter);
canvas.scale(xCenter, yCenter);
Paint gridPaint = new Paint();
gridPaint.setStrokeWidth(0.01f);
// Works with FILL
// gridPaint.setStyle(Paint.Style.FILL);
gridPaint.setStyle(Paint.Style.STROKE);
canvas.setBitmap(grid);
canvas.drawCircle(0, 0, 0.5f, gridPaint);
}
}
Vorrei provare a rifattorizzare il modo in cui stai disegnando i cerchi. Potresti descrivere cosa deve essere disegnato? Ad esempio: un cerchio centrato con raggio equivale a metà larghezza. –