Android API 26 引入了处理 color 的新方法:
Color longs are a representation introduced in Android O to store colors in different color spaces, with more precision than color ints.
现在我们可以使用新的颜色空间,像这样:
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);
最佳答案
我知道这个问题已经过了很长时间(不是 ColorLong :D ),但是您是否进一步向下滚动了文档?...
有一个dedicated section in Color
关于这些颜色。
例如你可以使用静态方法Color.valueOf(long)
从 long
转换为 Color
或者只使用非静态方法 Paint.setColor(long)
直接使用它。
您可以使用静态 Color.pack(float, float, float)
创建类型为 long
的颜色例如。那是在Encoding section .
在Decoding section它说您可以使用诸如静态 Color.alpha(long)
之类的方法获取 long
颜色的分量(在本例中为 alpha 分量)。
希望对您有所帮助。
关于java - 如何使用 "long"颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490889/