android - setColorFilter() 和可变绘图

标签 android bitmap drawable mutable

这段代码有什么问题?我一直在努力获得 dwb2 ColorFiltered 几个小时,当按下这个按钮时它只显示原始资源:(

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);
    }

最佳答案

最终解决了这个问题:

    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);

关于android - setColorFilter() 和可变绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133139/

相关文章:

android - 支持注解@StringDef、@IntDef声明标准?

android - 在 Activity 堆叠之前终止 Activity,因此召回 Activity 不会导致溢出

Android:显示可变图像

android - 将 Drawable 对象放置在 Android fragment 中布局的 View 中

android - Android TextView 到图像文件?

android - 定义要查看的顶部和底部阴影

android - 如果存在自定义 View ,Robolectric 无法扩充布局文件

redis - 如何从redis位图中获取二进制字符串?

java - 使用当前壁纸作为动态壁纸背景

android - 如何以编程方式检查图像(PNG、JPEG)在 Android 中是否已损坏或不受支持?