2

我有一个使用PixelXorXfermode类的旧库。但它在 API 17 中已被弃用,并从 API 24 中删除。

paint.setXfermode(new PixelXorXfermode(-1));

我试图查看它的源代码并看到它调用了本机方法。

private static native long nativeCreate(int opColor);

这门课有其他选择吗?或者有什么办法可以移植吗?

4

1 回答 1

2

我在这里找到了一个很好的教程,它通过大量示例解释了如何使用 ColorFilters。“反转”示例似乎完成了与 PixelXorXfermode 相同的事情。

public Bitmap getBitmap(Bitmap original)
{
    Bitmap bitmap = Bitmap.createBitmap(original.getWidth(), 
    original.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    Paint paint = new Paint();
    paint.setColorFilter(new ColorMatrixColorFilter(getColorMatrix()));
    canvas.drawBitmap(original, 0, 0, paint);

    return bitmap;
}

private ColorMatrix getColorMatrix() {
    return new ColorMatrix(new float[] {
        -1,  0,  0,  0, 255,
        0, -1,  0,  0, 255,
        0,  0, -1,  0, 255,
        0,  0,  0,  1,   0
    });
}
于 2017-04-28T19:33:28.523 回答