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

标签 android math view drawable

假设我们有一个内径 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 的宽度。我画这个是为了更容易解释:

enter image description here

这是内部有环的 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/

相关文章:

c - 在这个 CS50 问题集中,For 循环背后的数学原理是什么?

android - 更新到 Android Studio 1.3 后,Gradle 构建挂起

android - 使用 Realm 数据库的最佳方式

java - 摆脱(隐藏)Android TabWidget 的 "Focused State"

java - 安卓 SQLite : Check if row exists in table

android - OnTouchListener - ActionMove (android) 在一个触摸点给出不同的位置

python - 我怎样才能让我的程序打印 float ?

c++ - AABB碰撞代码的三角形不起作用

javascript - 从rails View 文件内的脚本调用js文件内的函数

mysql - 关于SQL View,我有一些困惑