确实会有问题, 单个表情的时候结束的时候onDraw会进入return的分支, 不在触发postInvalidate方法, 但是多表情的时候每次都会触发postInvalidate, 表情结束之后还在调用onDraw方法。
不过这里实现可以简单一点, 循环绘制每个表情的时候在判断是否超出边界的时候同时检测是不是最后一个表情, 如果是主动stop, 然后return
if (isOutOfBottomBound(i)){ if (i == emotions.size() - 1){ stop(); return; } continue; }