项目中使用到滑动渐变效果,动态设置控件setAlpha()但出现了一个问题
A控件引用color1 B控件也引用了color1 改变A的Alpha B控件也随之改变;
解决方案:
第一种:重新创建一个color2,两个控件引用不同资源
第二种:A.getBackground().mutate().setAlpha() 加上mutate()
/**
* 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 @NonNull Drawable mutate() {
return this;
}
google翻译一下
使这个drawable可变。 此操作无法逆转。 一个可变的drawable保证不与任何其他drawable共享其状态。 当您需要修改从资源加载的drawable的属性时,这尤其有用。 默认情况下,从同一资源加载的所有drawables实例共享一个公共状态; 如果修改一个实例的状态,则所有其他实例将收到相同的修改。