getBackground().setAlpha 奇葩问题

今天下午公司交代了一个任务,需求是顶部一个背景,默认是透明的,滑动的时候如透明变成项目的主题色,我用的是ScrollView监听滑动是Y轴的变化来设置颜色。最后看看效果达到了,但是奇葩的问题出现了,我改成了顶部的背景色,其它地方的也改变了,我的天啊,我查找每个地方是否是共用的同一个布局导致的,发现不是。。。

设置背景色的代码:mHomeTopLayout.getBackground().setAlpha(0);
最后的解决方案是:
mHomeTopLayout.getBackground().mutate().setAlpha(0);
在代码里面加上mutate()

因为同一资源加载的实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。

而加入mutate 就是让它不要共享同一个状态

你可能感兴趣的:(mutate)