RippleDrawable 如何绘制外部视图边界

How do RippleDrawable draw outside view bounds

  1. 创建一个ripple.xml

  2. 将可绘制对象设置为 ImageView

我发现圆圈是在电流外画的ImageView

这是如何工作的

最简单的方法 - 将 ImageView 放在更大的布局中,然后将波纹应用于布局。

原因是硬件加速,参见RippleDrawable中的函数isProjected()

如果isProjected() return true, DislayList 将保持此 RenderNode (参见 http://androidxref.com/7.1.1_r6/xref/frameworks/base/libs/hwui/DisplayListCanvas.cpp#addRenderNodeOp