Я пытаюсь нарисовать дугу для наложения поверх некоторой части существующего круга. Оба моих круга отлично рисуются, но ни мой вызов drawArc(), ни мой вызов drawRect() ничего не делают. Приложение не вылетает, исключений нет. Он просто молча терпит неудачу.
код onDraw():
@Override
protected void onDraw(Canvas canvas) {
int width = getWidth();
int height = getHeight();
int size = (width > height) ? height : width;
float cx = width / 2;
float cy = height / 2;
float radius = size / 2;
float left = cx - radius;
float right = cx + radius;
float top = cy - radius;
float bottom = cy + radius;
RectF rect = new RectF(left, top, right, bottom);
RectF rect2 = new RectF(canvas.getClipBounds());
Log.d("MyTag", "Left: " + rect.left + "Right: " + rect.right + "Top: " + rect.top + "Bottom: " + rect.bottom);
Log.d("MyTag", "Left: " + rect2.left + "Right: " + rect2.right + "Top: " + rect2.top + "Bottom: "
+ rect2.bottom);
canvas.drawCircle(cx, cy, radius, circleRing);//Works
canvas.drawCircle(cx, cy, radius - barWidth, innerColor);//Works
canvas.drawArc(rect, 0, angle, true, circleColor);//Doesn't work
canvas.drawRect(rect, circleColor);//Doesn't work
super.onDraw(canvas);
}
Я подтвердил, что мой circleColor
Paint настроен правильно, и что angle
является допустимым значением для дуги.
Мои краски настроены следующим образом в блоке {}, чтобы все конструкторы использовали его:
{
circleColor = new Paint();
innerColor = new Paint();
circleRing = new Paint();
circleColor.setColor(color.holo_blue_light);
innerColor.setColor(Color.BLACK);
circleRing.setColor(Color.GRAY);
circleColor.setAntiAlias(true);
innerColor.setAntiAlias(true);
circleRing.setAntiAlias(true);
circleColor.setStrokeWidth(50);
innerColor.setStrokeWidth(5);
circleRing.setStrokeWidth(5);
circleColor.setStyle(Paint.Style.FILL);
}
Что я пробовал:
- Координаты жесткого кодирования
- Использование красок, используемых кругами
- Наличие только вызова drawArc() и комментирование остальных рисунков
- Отключение аппаратного ускорения
Logcat показывает, что мой RectF имеет действительные точки, только верх и низ масштабированы, чтобы сформировать квадрат:
01-25 13:33:39.877: D/MyTag(21612): Left: 0.0 Right: 720.0 Top: 159.0 Bottom: 879.0 //Mine
01-25 13:33:39.877: D/MyTag(21612): Left: 0.0 Right: 720.0 Top: 0.0 Bottom: 1038.0 //Canvas'
Кто-нибудь знает, что может быть причиной этого?