Android API 26 引入了处理颜色的新方法:
颜色 long 是 Android O 中引入的一种表示形式,用于将颜色存储在不同的颜色空间中,比颜色整数更精确。
现在我们可以使用新的色彩空间,如下所示:
long longGreenColor = Color.pack(0.0f, 3.1415f, 0.0f, 1.0f, ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB));
不错,颜色很长。怎么办?
- 不能用于_
android.graphics.Canvas
- 不能用于_
android.graphics.Paint
- 不能用于_
android.graphics.Bitmap
绘图时我应该如何使用长颜色?
例如:
Bitmap bitmap = Bitmap.createBitmap(20, 20, Bitmap.Config.RGBA_F16, true, ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB));
long longColor = Color.pack(0.0f, 3.1415f, 0.0f, 1.0f, ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB));
bitmap.eraseColor(longColor);//ERROR
bitmap.eraseColor(Color.toArgb(longColor));//BAD!
bitmap.eraseColor((int) longColor);//WRONG!!!
Paint paint = new Paint();
paint.setColor(longColor);//ERROR
Canvas canvas = new Canvas(bitmap);
canvas.drawPoint(1, 1, paint);