私のアプリでは、ビットマップとdrawCircle()メソッドを使用して円を描く必要があります。Android 6.0でdrawCircleメソッドが正しく処理されない
Android 6.0まではすべて正常に動作していました。
それでも、すべての以前のバージョンでは円を描いていますが、6.0でアプリケーションを使用すると四角形が描かれます。しかし私はそれを塗りつぶすように変更すると、api 22とapi 23の両方に円が描かれます。 誰もが同じ問題を抱えているのですか?
ここにソースコードとスクリーンショットがあります(左側のAPI 23と右側のAPI 22で動作しているアプリ)。 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);
}
}
私はあなたがサークルを描く方法をリファクタリングしようとします。あなたは何を描かなければならないか説明できますか?例えば、半径を中心とする円は、幅の半分に等しい。 –