2016-11-12 55 views
2

我有一個使用PixelXorXfermode類的舊庫。但它是在API 17棄用,從API 24Android PixelXorXfermode已棄用

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

我想看看它的source code,看看它調用本地方法去除。

private static native long nativeCreate(int opColor); 

這個班有什麼其他選擇嗎?或者有什麼方法來移植它?

+0

您是否找到解決辦法? – Amber

回答

1

我找到了一個很好的教程here,它解釋瞭如何在很多示例中使用ColorFilters。 "invert" sample似乎完成與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 
    }); 
}