当前位置: 首页 > 面试题库 >

在Android中使用color和color.darker吗?

柴嘉石
2023-03-14
问题内容

好的,我的应用程序中有一个整数变量。它是颜色的值,由颜色选择器在我的首选项中设置。现在,我需要同时使用该颜色和可能使用的任何颜色的深色版本。

现在我知道在标准Java中有一个Color.darker()方法,但是在Android中似乎没有等效方法。有谁知道等效或任何替代方法?


问题答案:

我认为,最简单的方法是转换为HSV,在该处进行变暗,然后转换回原位:

float[] hsv = new float[3];
int color = getColor();
Color.colorToHSV(color, hsv);
hsv[2] *= 0.8f; // value component
color = Color.HSVToColor(hsv);

为了减轻负担,一种简单的方法可能是将值分量乘以> 1.0。但是,您必须将结果限制在[0.0,1.0]范围内。同样,简单地相乘不会减少黑色。

因此,一个更好的解决方案是:将值分量的差从1.0减小以减小:

hsv[2] = 1.0f - 0.8f * (1.0f - hsv[2]);

这与暗化方法完全平行,只是使用1作为原点而不是0。它可以使任何颜色(甚至黑色)变亮,并且不需要任何钳位。可以简化为:

hsv[2] = 0.2f + 0.8f * hsv[2];

但是,由于浮点运算的舍入效应,我担心结果可能超过1.0f(可能是一位)。最好坚持使用稍微复杂一些的公式。



 类似资料:
  • 问题内容: 我一直对此问题困扰太久了。此代码应输出加速度计的dx,dy,dz和dx的总计。它还应输出方位角,俯仰和横滚。 我已经使用了此处提供的信息,但无济于事。 该代码无法正确输出俯仰,方位角或横滚。最后三个文本视图分别输出0.0,-0.0,-0.0。 问题答案: 我可能丢失了一些内容(并且您可能已经解决了这个问题),但是对我来说,您的switch语句似乎不正确: 如果传感器事件从事件的值将被克

  • 编辑:我明白了,我在项目范围的build.gradle文件的allprojects->repositories部分实现了JBaruch的建议。 我正在写一个依赖于IOIO的项目。在我的项目上编译IOIO的libs给我带来了麻烦。我已经尝试将。aar和。jar文件直接放在我的libs/目录中。然而,在gradle中处理。aar文件被证明是一件麻烦的事情。现在,我尝试使用jcenter来查找这些lib

  • 我正在尝试使用JakeWharton的ViewPagerIndicator库,但无法将其用于Android Studio中的Gradle项目。 我将其添加为依赖项,如下所示: 但该项目似乎无法识别库中的任何组件。我想知道NineOldRoid中是否存在不同support-v4版本或其他版本的依赖性问题。。。?

  • 问题内容: 我想明白之间的差别,只是简单地?功能上有区别吗?据我所知,它们是完全相同的。您是否可以对其中之一进行其他操作? 问题答案: –此属性使您可以为文本指定填充颜色。如果未设置,则将使用该属性进行填充。 是的,它们是相同的,但是如果两者具有不同的值,则它们将优先。 我认为这样做的理由是,您可以在使用时根据需要选择其他颜色,但是如果不可用(因此也不可行),它将优雅地退回到。在某些情况下,您可能

  • 我需要一些关于我目前正在进行的项目的指导-我正在进行一个与BLE设备s. t.通信的项目。该设备连接到android手机并偶尔传输一些数据。我看了一些关于BLE与android设备通信的讲座,并阅读了一些关于android 4.3蓝牙API的信息,但有些东西我还没有得到 > 如果我希望我的应用程序向后兼容(高达2.3),这可能吗?他们(Google)在支持包中包含新功能吗? 我在哪里可以找到一些使

  • 我对jni是新手,我正在阅读一个教程来实现一个简单的本机方法,但我得到了一个不满意的LinkError。据我所知,我完全按照教程中的步骤进行了操作。请帮帮我. 下面是java包装器代码: 下面是我的Android.mk文件的样子: 下面是我的。h文件的样子: