this.getBackground().mutate()的mutate方法

    如果有多个控件同时使用某一个图片资源,并且要改变该资源的状态时就需要用mutate方法。使用mutate是为了更改一个资源的状态时,其余引用该资源的控件不会也更改状态。

    默认情况下,所有的从同一资源(R.drawable.***)加载的drawable实例都共享一个共用的状态,如果你更改一个实例的状态,其余的实例都会接收到相同的通知。使用mutate可以使该drawable状态不定。一个不定状态的drawable不会共享状态。

Drawable bkDrawable = this.getBackground().mutate();

if (null != bkDrawable)

{

      if (enable)

      {

             bkDrawable.clearColorFilter();

      }

      else

      {

             //通过setColorFilter来改变drawable的状态,如果不用mutate,其余引用了该背景

                的资源也会被设置这个ColorFilter

             bkDrawable.setColorFilter(m_disableColor, PorterDuff.Mode.DST_OUT);

      }

      this.setBackgroundDrawable(bkDrawable);

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章