其中计算 RippleDrawable 半径 RADIUS_AUTO

Where calculating RippleDrawable radius wtih RADIUS_AUTO

DocsRadius 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 处理波纹和焦点状态共有的大小和定位。 RippleStateRippleDrawable.

都不是