2012-08-26 65 views
4

這段代碼有什麼問題?我一直在掙扎着爬dwb2 ColorFiltered幾個小時,它只是顯示時按下此按鈕:(setColorFilter()和可變的drawables

public ButtonEx(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 

     Drawable dwb = getResources().getDrawable(R.drawable.mainboard_btn_pen_colour); 
     Drawable dwb2 = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.mainboard_btn_extra_time1) 
               .copy(Bitmap.Config.ARGB_8888, true)); 
     dwb2.setColorFilter(getResources().getColor(R.color.mod_selected), PorterDuff.Mode.MULTIPLY); 

     mLstDrawables.addState(new int[] {android.R.attr.state_pressed}, dwb2); 
     mLstDrawables.addState(StateSet.WILD_CARD, dwb); 

     setBackgroundDrawable(mLstDrawables); 
    } 

回答

4

結束瞭解​​決該問題的原始資源:

Drawable dwb = getResources().getDrawable(R.drawable.mainboard_btn_pen_colour); 
    Bitmap immutable = BitmapFactory.decodeResource(getResources(), R.drawable.mainboard_btn_extra_time1); 
    Bitmap mutable = immutable.copy(Bitmap.Config.ARGB_8888, true); 
    Canvas c = new Canvas(mutable); 
    Paint p = new Paint(); 
    p.setColor(getResources().getColor(R.color.mod_selected)); 
    p.setColorFilter(new PorterDuffColorFilter(getResources().getColor(R.color.mod_selected), PorterDuff.Mode.MULTIPLY)); 
    c.drawBitmap(mutable, 0.f, 0.f, p); 
    BitmapDrawable dwb3 = new BitmapDrawable(getResources(), mutable); 

    mLstDrawables.addState(new int[] {android.R.attr.state_pressed}, dwb3); 
    mLstDrawables.addState(StateSet.WILD_CARD, dwb); 

    setBackgroundDrawable(mLstDrawables);