/** * 设置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); } }