GradientDrawable类的innerRadiusRatio和thicknessRatio之间存在什么样的联系?

时间:2011-10-25 16:02:46

标签: android math view drawable

假设我们有一个内半径为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

关于thicknessRatio,有: 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这意味着thicknessRatio和innerRadiusRatio之间存在联系。但是GradientDrawable类文档中没有关于此连接的内容。并且似乎它们之间没有任何连接,因为我可以设置thicknessRatio和innerRadiusRatio,它不满足最后的等式。

请告诉我,在我的考虑中我错了或者这些参数真正负责的是什么?

2 个答案:

答案 0 :(得分:37)

我知道这已经很晚了,但它可能会帮助其他人寻找这个。

在文档中说:

  

环的内半径表示为环宽的比率。

戒指的宽度不是戒指的半径,而是包含戒指的视图的宽度。我画这个是为了更简单的解释:

enter image description here

这是一个带有戒指的视图的方案。这些字母意思是:

  • W:宽度
  • P:Padding
  • Th:厚度
  • Ir:Inner Radius。

我将补充说:

  • R:Radius。
  • IRR:InnerRadiusRatio。
  • THR:ThicknesRatio。

文档实际上描述了以下关系:

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

所以你实际上可以计算半径。

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

您可以通过创建具有以下内容的环的视图来证明这一点:

InnerRadiusRatio="4"
ThicknessRatio="4".

这将创建一个与视图具有完全相同宽度的环。

注意:所有以前的公式都是使用无填充计算的。如果视图上有填充,则应将每个W替换为(W-P)。

答案 1 :(得分:5)

比率是两个数字的比较,因此上述两个方程可以重写为

Ratio1 = InnerRadius 戒指宽度(其中Ratio1 = InnerRadiusRatio)

比率2 =厚度环宽度(其中Ratio2 = ThicknessRatio)

这意味着......

环宽=比率1 x 内半径=比率2 x 厚度

自从您将其添加到等式中后,“ 2 ”就出现了。所有等式中唯一的共同点是“环宽”。用实数来试试也有帮助。