gpt4 book ai didi

java - 根据条形的宽度为其着色

转载 作者:行者123 更新时间:2023-12-01 23:11:10 26 4
gpt4 key购买 nike

我有一个特殊问题正在尝试解决。

拿一个视频游戏生命条来说,它是完全绿色的,然后慢慢变成红色,直到条的宽度几乎为零时变成红色。

我正在制作一个带有栏的应用程序,该栏的宽度可以是从屏幕全宽到零的任何位置。我不想让条形根据其宽度从一种颜色更改为另一种颜色,而是希望它更改为 5 种颜色。

在 100% 时,我希望条形图为蓝色 (#33B5E5)。

在 80% 时,我希望条形变为紫色 (#AA66CC)。

在 60% 时,我希望条形图为绿色 (#99CC000。

在 40% 时,我希望条形图为橙色 (#FFBB33)。

最后,在 20% 时,我希望条形图为红色 (#FFBB33)。

我省略了 0%,因为低于 20% 的任何值都会保持相同的红色阴影。注意:为了避免混淆,我有条形的百分比,这不是问题,主要目标是当宽度变化时,它是中间颜色的阴影。

示例:在 90% 时,条形图的颜色应该正好位于蓝色和紫色之间,而不是其中任何一个。

从数学上来说,我该如何做呢?

从技术上讲,我是用 Java 来做这件事的,但任何语言中解决这个问题的任何解决方案,甚至是伪代码,都将被接受。

编辑:我仍然得到在给定时间间隔内输出颜色的答案。这不是我想要实现的目标。这更多的是一个数学问题。我希望颜色基于百分比。条形图唯一应呈紫色的情况是当百分比正好为 80% 时,在 70% 时,颜色应恰好介于紫色和绿色之间。重点是颜色是动态的。颜色突然变成另一种静态颜色在视觉上并不那么有趣:)

最佳答案

这是一个重用 Android 的 LinearGradient 的方法,它支持色标的非均匀分布。您可以预先构建一次颜色数组,并将其用作当前百分比的查找。

public static int[] getColors(int size) {

LinearGradient gradient = new LinearGradient(0, 0, size, 1,
new int[] {
0xffffbb33,
0xffffbb33,
0xff99cc00,
0xffaa66cc,
0xFF33b5e5 },
new float[] {
0f, 0.2f, 0.4f, 0.6f, 1f },
Shader.TileMode.CLAMP);

Paint p = new Paint();
p.setStyle(Paint.Style.FILL);
p.setShader(gradient);

Bitmap bitmap = Bitmap.createBitmap(size, 1, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawRect(0, 0, size, 1, p);

int[] colors = new int[size];
bitmap.getPixels(colors, 0, size, 0, 0, size, 1);
bitmap.recycle();
return colors;
}

关于java - 根据条形的宽度为其着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com