Android 已弃用 PixelXorXfermode
Android PixelXorXfermode deprecated
我有一个使用 PixelXorXfermode class 的旧图书馆。但它在 API 17 中被弃用并从 API 24 中删除。
paint.setXfermode(new PixelXorXfermode(-1));
我试图查看它的 source code 并看到它调用了本机方法。
private static native long nativeCreate(int opColor);
这个class有什么替代方案吗?或者有什么办法移植吗?
我找到了一个很好的教程here that explains how to use ColorFilters with lots of examples. The "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
});
}
我有一个使用 PixelXorXfermode class 的旧图书馆。但它在 API 17 中被弃用并从 API 24 中删除。
paint.setXfermode(new PixelXorXfermode(-1));
我试图查看它的 source code 并看到它调用了本机方法。
private static native long nativeCreate(int opColor);
这个class有什么替代方案吗?或者有什么办法移植吗?
我找到了一个很好的教程here that explains how to use ColorFilters with lots of examples. The "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
});
}