Docs说Radius value that specifies the ripple radius should be computed based on the size of the ripple's container.
,但我找不到它的确切计算位置。我试着用调试器把它重新编译出来,但没有成功。
你能告诉我这个计算是在哪里进行的吗?
我找到了。该计算在RippleComponent
类的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);
}
正是这个类处理了ripple&焦点状态。既不是RippleState
也不是RippleDrawable
。