假设我们有一个内径 R2 和外径 R1 的环。根据文档:
环的内半径表示为环宽度的比率。例如,如果 innerRadiusRatio=9,则内半径等于环的宽度除以 9
据我了解,这意味着 innerRadiusRatio = 2*R1/R2
。
关于 thicknessRatio 有:
环的厚度表示为环宽度的比率。例如,如果 thicknessRatio=3,则厚度等于环的宽度除以 3
。所以 thicknessRatio = 2*R1/(R1 - R2)
。
从这两个等式我们可以得到这个:thicknessRatio*(1-2/innerRadiusRatio)=2
这意味着 thicknessRatio 和 innerRadiusRatio 之间存在联系。但是GradientDrawable中没有关于这个连接的任何内容。类文档。而且它们之间似乎没有任何联系,因为我可以设置不满足最后一个方程的 thicknessRatio 和 innerRadiusRatio。
所以请告诉我我的考虑哪里错了,或者这个参数真正负责什么?
最佳答案
我知道这已经很晚了,但它可能会帮助其他人寻找这个。
在文档中它说:
Inner radius of the ring expressed as a ratio of the ring's width.
环的宽度不是环的半径,而是包含环的 View 的宽度。我画这个是为了更容易解释:
这是内部有环的 View 的方案。这些字母的意思是:
- W:宽度
- P:填充
- Th:厚度
- Ir:内半径。
我会补充:
- R:半径。
- IRR:InnerRadiusRatio。
- THR:ThicknesRatio。
文档实际上描述了如下关系:
- Ir = W/IRR
- Th = W/THR
所以你实际上可以计算出半径。
- R = Ir + Th = W (1/IRR + 1/THR)。
您可以通过创建一个具有 Ring 的 View 来证明这一点:
InnerRadiusRatio="4"
ThicknessRatio="4".
这将创建一个与 View 宽度完全相同的环。
注意:所有前面的公式都是在没有填充的情况下计算的。如果 View 上有填充,则应将每个 W 替换为 (W - P)。
关于android - GradientDrawable 类的 innerRadiusRatio 和 thicknessRatio 之间存在什么样的联系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892169/