摘录android的官方注释
/** * Make this drawable mutable. This operation cannot be reversed. A mutable * drawable is guaranteed to not share its state with any other drawable. * This is especially useful when you need to modify properties of drawables * loaded from resources. By default, all drawables instances loaded from * the same resource share a common state; if you modify the state of one * instance, all the other instances will receive the same modification. * * Calling this method on a mutable Drawable will have no effect. * * @return This drawable. * @see ConstantState * @see #getConstantState() */ public Drawable mutate() { return this; }
上面的注释已经说的很明白了:让这个draw变成一个可变的drawable。什么是可变的drawable呢?
android中从同一个资源文件中加载出来的drawable会共享状态,如果你加载出来多个drawable,当改变了其中一个的状态时,其他drawable的状态也会相应改变。
如果把这个drawable变为mutate drawable后,这个drawable就不会与其他drawable共享状态。
特别注意,这个mutate操作是不可逆转的。