Я использую android.graphics Android. Класс холста для рисования кольца. Мой onDraw метод отсекает холст для создания дыры для внутреннего круга и затем рисует полный внешний круг по дыре:
clip = new Path();
clip.addRect(outerCircle, Path.Direction.CW);
clip.addOval(innerCircle, Path.Direction.CCW);
canvas.save();
canvas.clipPath(clip);
canvas.drawOval(outerCircle, lightGrey);
canvas.restore();
Результатом является кольцо с симпатичным, сгладил внешний край и зубчатый, ужасный внутренний край:
Что я могу сделать для сглаживания внутреннего края?
Я не хочу обманывать путем рисования серого круга в середине, потому что диалоговое окно немного прозрачно. (Эта прозрачность не является столь же тонкой на на других фонах.)
Насколько мне известно, вы не можете сглаживать обрезку областей.
Я бы предложил вместо этого использовать растровую маску. Визуализируйте розовый, белый и светло-серый передний план в одно растровое изображение, визуализируйте маску внешнего / внутреннего круга (альфа-канал в градациях серого) в другое растровое изображение, а затем используйте Paint.setXfermode
для визуализации растрового изображения переднего плана с помощью маска в качестве альфа-канала.
Пример можно найти в исходном коде ApiDemos
здесь .