Какая связь существует между innerRadiusRatio и толщинаRatio из класса GradientDrawable? - PullRequest
6 голосов
/ 25 октября 2011

Предположим, у нас есть кольцо с внутренним радиусом R2 и внешним радиусом R1.Согласно документации: Inner radius of the ring expressed as a ratio of the ring's width.For instance, if innerRadiusRatio=9, then the inner radius equals the ring's width divided by 9 Насколько я понимаю, это означает, что innerRadiusRatio = 2*R1 / R2.

По поводу толщины Ratio есть, что: Thickness of the ring expressed as a ratio of the ring's width. For instance, if thicknessRatio=3, then the thickness equals the ring's width divided by 3.Таким образом, thicknessRatio = 2*R1 / (R1 - R2).

Из этих двух уравнений мы можем получить это: thicknessRatio*(1-2/innerRadiusRatio)=2, что означает, что существует связь между widthRatio и innerRadiusRatio.Но в документации GradientDrawable нет ничего об этом соединении.И не похоже, что между ними есть какие-либо связи, так как я могу установить толщинаRatio и innerRadiusRatio, которые не удовлетворяют последнему уравнению.

Так скажите, пожалуйста, в чем я ошибаюсь или за что действительно отвечают эти параметры?

Ответы [ 2 ]

38 голосов
/ 19 марта 2015

Я знаю, что уже довольно поздно, но это может помочь другим в этом.

В документации сказано:

Внутренний радиус кольца, выраженный в виде отношения ширина кольца .

Ширина кольца не является радиусом кольца, это ширина вида, содержащего кольцо. Я рисую это для более простого объяснения:

enter image description here

Это схема вида с кольцом внутри. Буквы означают:

  • Ш: Ширина
  • P: Padding
  • Th: Толщина
  • ИК: внутренний радиус.

И я добавлю:

  • R: Радиус.
  • IRR: InnerRadiusRatio.
  • THR: ThicknesRatio.

Документация фактически описывает следующие отношения:

  • Ir = W / IRR
  • Th = W / THR

Таким образом, вы можете вычислить радиус.

  • R = Ir + Th = W (1 / IRR + 1 / THR).

Вы можете доказать это, создав представление с Кольцом, которое имеет:

InnerRadiusRatio="4"
ThicknessRatio="4".

Это создаст кольцо, ширина которого будет точно такой же, как у вида.

Примечание: Все предыдущие формулы рассчитываются с без заполнения . Если в View есть отступы, вы должны заменить каждый W на (W - P).

5 голосов
/ 03 ноября 2011

Соотношения представляют собой сравнение двух чисел, поэтому два приведенных выше уравнения можно переписать как

Ratio1 = InnerRadius : Ширина кольца (где Ratio1 = InnerRadiusRatio)

Соотношение2 = Толщина : Ширина кольца (где Соотношение2 = Соотношение толщины)

Что значит ...

Ширина кольца = отношение1 x Внутренний радиус = отношение2 x Толщина

" 2 " появилось с тех пор, как вы добавили его в свое уравнение. Единственный общий знаменатель во всем уравнении - «Ширина кольца». Испытание с реальными числами тоже помогает.

...