Java 如何使用;“长”;颜色

Java 如何使用;“长”;颜色,java,android,colors,android-8.0-oreo,Java,Android,Colors,Android 8.0 Oreo,Android API 26引入了处理以下问题的新方法: 颜色长是Android O中引入的一种表示,用于存储 不同颜色空间中的颜色,比颜色整数更精确 现在我们可以使用新的颜色空间,如下所示: long longGreenColor = Color.pack(0.0f, 3.1415f, 0.0f, 1.0f, ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB)); 不错,颜色很长。现在怎么办 是否可以在android.grap

Android API 26引入了处理以下问题的新方法:

颜色长是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);

颜色实例是不可变的,可以使用各种valueOf方法之一创建。例如:

// sRGB
 Color opaqueRed = Color.valueOf(0xffff0000); // from a color int
 Color translucentRed = Color.valueOf(1.0f, 0.0f, 0.0f, 0.5f);

 // Wide gamut color
 @ColorLong long p3 = pack(1.0f, 1.0f, 0.0f, 1.0f, colorSpaceP3);
 Color opaqueYellow = Color.valueOf(p3); // from a color long

 // CIE L*a*b* color space
 ColorSpace lab = ColorSpace.get(ColorSpace.Named.LAB);
 Color green = Color.valueOf(100.0f, -128.0f, 128.0f, 1.0f, lab);
我知道这个问题已经问了很长时间了(不是ColorLong:D),但是您是否进一步向下滚动文档

关于这种颜色有很多不同的说法

例如,您可以使用静态方法将
long
转换为
Color
,或者直接使用非静态方法

例如,您可以使用static创建类型为
long
的颜色。那是在房间里

在这种情况下,您可以使用诸如static之类的方法来获得
long
color的分量(本例中为alpha分量)


希望有帮助。

这不是答案。长颜色确实不能用在画布上。这些“错误”、“错误”、“不好”的评论是什么意思?它不能编译吗?它会崩溃吗?它是否给出了错误的结果(如果是,那么具体是什么?)要使用Paint.setColor(LongColor),我们需要API级别29,所以我们需要使用Android 10。当我问这个问题时,API级别是26。升级到Android 10,这就是答案。好的。我尝试在网页中加载API级别26,但由于某些原因无法加载。API 26中缺少哪些方法?API 26中是否缺少此文档?谢谢你接受。是的,安卓8没有:(