In meiner App muss ich Kreise mit der Bitmap und der drawCircle() -Methode zeichnen.Android 6.0 behandelt die drawCircle-Methode
Alles funktionierte gut und genau so wie es bis Android 6.0 sein sollte.
Es zeichnet immer noch Kreise auf allen vorherigen Versionen, aber zeichnet Rechtecke, wenn ich die App auf 6.0 verwende. Aber wenn ich es zum Füllen ändern, zeichnet es einen Kreis sowohl in api 22 als auch api 23. Hat jemand das gleiche Problem oder eine Idee, warum das passiert?
Hier ist der Quellcode und ein Screenshot (App läuft auf API 23 auf der linken Seite und API 22 auf der rechten Seite). 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);
}
}
Ich würde versuchen, die Art, wie Sie die Kreise zeichnen, neu zu gestalten. Kannst du beschreiben, was gezeichnet werden muss? Zum Beispiel: ein Kreis mit zentriertem Radius entspricht der halben Breite. –