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

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

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

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

detailTitle.getBackground().setAlpha(30);

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,613评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,752评论 0 17
  • 哈哈哈哈哈
    张小嘴阅读 202评论 0 0
  • 1 昨天晚上坐在公共阅览室读书,正读到酣畅处忽然发现桌子抖动不已;抬头发现对面姑娘背靠椅子不停抖腿,似乎很是惬意,...
    拥风与你阅读 308评论 0 0
  • 人生为何如此匆匆繁忙?孤独与寂寞伴随着我们的一生。 踏着脚下的这条路,意味着这场孤单的旅行即将开始。其...
    缥缈梨醉阅读 509评论 3 3