其中计算 RippleDrawable 半径 RADIUS_AUTO
Where calculating RippleDrawable radius wtih RADIUS_AUTO
Docs 说 Radius value that specifies the ripple radius should be computed based on the size of the ripple's container.
但我找不到它计算的确切位置。我试图用调试器逃避它,但没有成功。
你能告诉我这个计算是在哪里进行的吗?
我找到了。该计算在 RippleComponent
class:
的 setup(float, int)
方法中执行
public final void setup(float maxRadius, int densityDpi) {
if (maxRadius >= 0) {
mHasMaxRadius = true;
mTargetRadius = maxRadius;
} else {
mTargetRadius = getTargetRadius(mBounds); // this place!
}
mDensityScale = densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
onTargetRadiusChanged(mTargetRadius);
}
正是这个 class 处理波纹和焦点状态共有的大小和定位。 RippleState
和 RippleDrawable
.
都不是
Docs 说 Radius value that specifies the ripple radius should be computed based on the size of the ripple's container.
但我找不到它计算的确切位置。我试图用调试器逃避它,但没有成功。
你能告诉我这个计算是在哪里进行的吗?
我找到了。该计算在 RippleComponent
class:
setup(float, int)
方法中执行
public final void setup(float maxRadius, int densityDpi) {
if (maxRadius >= 0) {
mHasMaxRadius = true;
mTargetRadius = maxRadius;
} else {
mTargetRadius = getTargetRadius(mBounds); // this place!
}
mDensityScale = densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE;
onTargetRadiusChanged(mTargetRadius);
}
正是这个 class 处理波纹和焦点状态共有的大小和定位。 RippleState
和 RippleDrawable
.