计算RippleDrawable半径时使用radius_AUTO



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

相关内容

  • 没有找到相关文章

最新更新