view.getBackground().setAlpha() 设置透明度影响其他页面状态问题

/**
 * 设置View的背景透明度
 *
 * @param view
 * @param alpha
 */
public void setViewBackgroundAlpha(View view, int alpha) {
    if (view == null) return;

    Drawable drawable = view.getBackground();
    if (drawable != null) {
        drawable.setAlpha(alpha);
    }
}

 

问题:当设置view背景透明度时时,会对其他页面颜色状态影响 

解决:将上边的方法改为下边方法   # mutate()

 

如果有多个控件同时使用某一个图片资源,并且要改变该资源的状态时就需要用mutate方法。使用mutate是为了更改一个资源的状态时,其余引用该资源的控件不会也更改状态。 默认情况下,所有的从同一资源(R.drawable.***)加载的drawable实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。使用mutate可以使该drawable状态不定。一个不定状态的drawable不会共享状态。

 

/**
 * 设置View的背景透明度
 *
 * @param view
 * @param alpha
 */
public void setViewBackgroundAlpha(View view, int alpha) {
    if (view == null) return;

    Drawable drawable = view.getBackground();
    if (drawable != null) {
        drawable.mutate().setAlpha(alpha);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值