Динамическое расположение кнопок по кругу

Я все еще новичок в android, поэтому не совсем знаком со всеми компонентами представления. Я борюсь с динамическим выравниванием кнопок по кругу.

Я пытаюсь добавить n кнопок (n может измениться во время создания) в представление, которое выглядит как прикрепленное изображение:

Я бы не хотел использовать absoluteLayout (но я открыт для предложения, если это единственный способ решить эту проблему). Я уже сделал расчет для позиций x / y для кнопок (пока игнорируя размер кнопки):

int iNumberOfButtons = 10;
double dIncrease = Math.PI * 2 / iNumberOfButtons,
    dAngle = 0,
        x = 0,
        y = 0;

  for( int i = 0; i < iNumberOfButtons; i++ )
  {
    x = 100 * Math.cos( dAngle ) + 200;
    y = 100 * Math.sin( dAngle ) + 200;
    dAngle += dIncrease;
    // get button and set position?
  }

Я думал об использовании этого кода изнутри настраиваемого представления, но, судя по тому, что я видел, представление должно быть унаследованный от ViewGroup, чтобы иметь метод addView, а затем снова только absoluteLayout, похоже, позволяет устанавливать позиции x, y ... Я не понимаю, как реализовать эту функцию.

Я мог бы добавить некоторые анимации в это представление позже, поэтому использование SurfaceView может быть неплохим, если это возможно, но это не является обязательным требованием.

12
задан ArtKorchagin 12 December 2015 в 20:29
поделиться