美文网首页
颜色丢失?为什么我的界面颜色突然就变透明的了

颜色丢失?为什么我的界面颜色突然就变透明的了

作者: wt龙 | 来源:发表于2016-10-27 09:47 被阅读32次

    其实,最近在项目中一直有一个问题困扰着我,为什么我的app颜色突然就全变成透明的了。是手机出问题了吗,颜色给丢了??测试问我这个问题,我还真是说不上的所以然来,只能说是机型问题了。嘿嘿。因为不断的在需求,所以也没有顾得上来管这个问题。

    然后今天想起这个问题。就自己点了点测试了一下。其实是当点进了某一个特定的页面,然后在退出这个页面,其他所以页面的颜色都丢失了。为什么呢??不解啊。

    上网查了一下。发现还真有这个问题,

    detailTitle.getBackground().setAlpha(30);

    竟然是因为设置了透明度这个属性

    查了些资料才发现,导致本文所说问题的原因是:默认情况下,所有的加载同一资源的实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。所以使用getBackground()获取到程序主色调资源(该主色调在colors.xml中定义)后,setAlpha(0)就将该资源的值修改为了透明,所以之后在程序中所有引用该资源的地方都变为了透明。getBackground()慎用啊,改一处就全改了。。。

    局中多个控件同时使用一个资源的时候,这些控件会共用一个状态 如果你改变了一个控件的状态,其他的控件都会接收到相同的通知。这时我们可以使用mutate()方法使该控件状态不定,这样不定状态的控件就不会共享自己的状态了

    getBackground().mutate().setAlpha(30); 酱紫。

    相关文章

      网友评论

          本文标题:颜色丢失?为什么我的界面颜色突然就变透明的了

          本文链接:https://www.haomeiwen.com/subject/zgvjuttx.html