我正在阅读RippleForegroundRippleDrawable
(软件渲染部分)的实现,我已经知道有界意味着波纹有一个遮罩。
但我仍然对实施的某些方面感到困惑:
为什么实现说“有界涟漪没有进入动画”并简单地跳过进入动画?在这种情况下如何启动波纹动画(如果用户没有释放他的触摸所以没有退出)?
@Override protected Animator createSoftwareEnter(boolean fast) { // Bounded ripples don't have enter animations. if (mIsBounded) { return null; } ... }
为什么实现为和选择了一个几乎恒定的值(为什么是
random()
)?如果被遮罩的视图大于该尺寸怎么办,它会正常工作吗?mBoundedRadius
mTargetRadius
ColorDrawable
public RippleForeground(RippleDrawable owner, Rect bounds, float startingX, float startingY, boolean isBounded) { ... if (isBounded) { mBoundedRadius = MAX_BOUNDED_RADIUS * 0.9f + (float) (MAX_BOUNDED_RADIUS * Math.random() * 0.1); } ... } ... private void computeBoundedTargetValues() { ... mTargetRadius = mBoundedRadius; }