我画了一个环形,这是:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:useLevel="false">
<solid android:color="@android:color/holo_blue_light" />
<size
android:width="200dp"
android:height="200dp" />
</shape>
我没有指定
innerRadiusRatio
或 thicknessRatio
属性,因此,根据文档(对于 innerRadiusRatio
,对于 thicknessRatio
),它们将分别为 9 和 3。
但是,当我以编程方式检索这些值时,它们似乎是相反的:
val ring = ContextCompat.getDrawable(this, R.drawable.ring) as GradientDrawable
Log.i(TAG, "thicknessRatio = ${ring.thicknessRatio}")
Log.i(TAG, "innerRadiusRatio = ${ring.innerRadiusRatio}")
输出为:
厚度比 = 9.0
内半径比率 = 3.0
除了这里的错误之外我想不出任何东西。
也许我错过了什么?
由此产生的环显然其厚度似乎小于其内半径:
看起来像是。
由此产生的环显然其厚度似乎小于 它的内半径
那是因为这些值是宽度的约数:
float thickness = st.mThickness != -1 ?
st.mThickness : bounds.width() / st.mThicknessRatio;
// inner radius
float radius = st.mInnerRadius != -1 ?
st.mInnerRadius : bounds.width() / st.mInnerRadiusRatio;
通过问题中的链接提供的文档也证实了这一点,除了默认值,这是不正确的:
内半径等于环的宽度除以 9
厚度等于环的宽度除以3