Canvas в Android представляет собой поверхность для рисования. Это объект, который предоставляет методы для отрисовки графических примитивов (точек, линий, прямоугольников, кругов, текста, изображений) на битовой карте (Bitmap) или другой поверхности.
Что такое Canvas в Android?
Canvas в Android представляет собой поверхность для рисования.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Canvas в Android представляет собой поверхность для рисования. Это объект, который предоставляет методы для отрисовки графических примитивов (точек, линий, прямоугольников, кругов, текста, изображений) на битовой карте (Bitmap) или другой поверхности.
Основные концепции:
- Рисование:
Canvasпредоставляет API для выполнения операций рисования, таких какdrawPoint(),drawLine(),drawRect(),drawCircle(),drawText(),drawBitmap(). - Координатная система: Использует двумерную координатную систему, где точка (0,0) находится в левом верхнем углу.
- Состояние:
Canvasимеет состояние, включающее текущие преобразования (сдвиг, масштабирование, поворот) и область отсечения (clip region), которые можно сохранять и восстанавливать (save()иrestore()). - Paint: Объекты
Paintиспользуются для определения стиля рисования, такого как цвет, толщина линии, затенение, шрифты и т.д.Canvasиспользует текущийPaintдля каждой операции рисования.
Пример использования в кастомном View:
// Внутри метода onDraw()
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
// Создаем объект Paint
Paint paint = new Paint();
paint.setColor(Color.RED); // Устанавливаем цвет
// Рисуем прямоугольник
canvas.drawRect(10, 10, 100, 100, paint);
// Рисуем круг
paint.setColor(Color.BLUE);
canvas.drawCircle(150, 150, 50, paint);
// Устанавливаем текст
paint.setColor(Color.BLACK);
paint.setTextSize(30);
canvas.drawText("Hello, Canvas!", 10, 200, paint);
}
Canvas тесно связан с объектами View. Когда система отрисовывает View, она создает объект Canvas и передает его в метод onDraw() View. View затем использует этот Canvas для рисования своего содержимого.