Android 6.0 behandelt die drawCircle-Methode falsch

8

In meiner App muss ich Kreise mit der Bitmap und der drawCircle () -Methode zeichnen.

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 Ausfüllen ändere, zeichnet es sowohl in api 22 als auch api 23 einen Kreis. Jeder hat 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). gleiche App auf verschiedenen APIs

%Vor%     
Darja Tretjakova 28.10.2015, 14:58
quelle

1 Antwort

1

Ich denke, es hat etwas mit der Skalierung und Übersetzung zu tun, die Sie tun. Stellen Sie sich vor, der Kreis, der gezeichnet wird, ist so klein, dass er nur 4 Pixel benötigt. Wenn Sie diese Größe wieder auf die volle Größe vergrößern, bleiben 4 gerade Linien zwischen diesen Pixeln.

Wenn ich die Strichbreite auf 0.04f ändere, ist das Problem weg. Ich würde vorschlagen, dass Sie Ihren Code vereinfachen, indem Sie direkt auf das mitgelieferte Canvas zurückgreifen:

%Vor%

Was Ihre Frage zu den Unterschieden zwischen den API-Levels angeht: Marshmallow führte Änderungen für drawBitmap() ein. Sie können sich den jeweiligen Quellcode für Lollipop und Marshmallow .

    
Thomas 28.10.2015 19:10
quelle