Android Custom View: есть ли метод настройки, вызываемый перед onDraw, который имеет доступ к Width
У меня есть некоторый код в перезаписанном OnDraw(Canvas canvas)
метод в пользовательском классе представления, который вызывается многократно для рисования кругов с использованием caclulated радиуса. Радиус нужно вычислять только один раз, но ширина просмотра необходима для вычисления, поэтому это нельзя сделать в конструкторе.
circleRadius = Width / CIRCLES_TO_FIT_AT_ONCE / 2;
canvas.DrawCircle(Width / 2 + (i - startIndex) * circleRadius * 2, Height / 2, circleRadius, paint);
Можно ли где-нибудь переместить вычисление circleRadius, чтобы оно не было необоснованно пересчитано при каждом вызове отрисовки? Возможно, другой способ переопределить?
1 ответ
Решение
Благодаря Mike M..
protected override void OnSizeChanged(int w, int h, int oldw, int oldh)
{
// Calculate circle size
circleRadius = w / CIRCLES_TO_FIT_AT_ONCE / 2;
}