android - Android - 为画布上的复杂路径设置多种颜色
问题描述
我正在尝试在 XY 图上创建路径。我想为颜色指示用户体重的路径着色。
我试过这段代码:
private final float[] PERCENT_COLORS = {0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f, 1.2f};
public float[] normalizedPercentColors = {0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f, 1.2f};
private final int[] COLOR_SCALE = {
Color.rgb(210, 210, 210),
Color.rgb(255, 255, 0),
Color.rgb(102, 204, 51),
Color.rgb(51, 81, 220),
Color.rgb(171, 53, 133),
Color.rgb(210, 39, 39),
Color.rgb(0, 0, 0)};
@Override
public void onGenerateColors(TreadmillApp.TmData data) {
reportColors.add(generateColor((data.totalForce * .1f / (float) mApp.weightValue)));
}
public int generateColor(float percent) {
if (percent >= 1.20) {
return Color.rgb( 0, 0, 0);
} else if (percent < normalizedPercentColors[0]) {
return Color.rgb(100, 100, 100);
}
int i = 1;
for (; i < normalizedPercentColors.length - 1; i++) {
if (percent < normalizedPercentColors[i]) {
break;
}
}
float lower = normalizedPercentColors[i - 1];
float upper = normalizedPercentColors[i];
float range = upper - lower;
float percentUpper = (percent - lower) / range;
float percentLower = 1 - percentUpper;
int red = (int) Math.floor(Color.red(COLOR_SCALE[i - 1]) * percentLower + Color.red(COLOR_SCALE[i]) * percentUpper);
int green = (int) Math.floor(Color.green(COLOR_SCALE[i - 1]) * percentLower + Color.green(COLOR_SCALE[i]) * percentUpper);
int blue = (int) Math.floor(Color.blue(COLOR_SCALE[i - 1]) * percentLower + Color.blue(COLOR_SCALE[i]) * percentUpper);
return Color.rgb(red, green, blue);
}
public void setColors(ArrayList<Integer> reportColors) {
int[] colors = Ints.toArray(reportColors);
Shader shader = new LinearGradient(0, 0, 0, mPointArray.size(), colors,
null, Shader.TileMode.REPEAT);
Matrix matrix = new Matrix();
matrix.setRotate(90);
shader.setLocalMatrix(matrix);
pathPaint.setShader(shader); //paint to set path
}
pathPaint
根据我在另一个问题中找到的示例,我将路径设置为。但是,setColors
似乎不适用于复杂的路径。我想知道,有什么方法可以为我的路径设置多种颜色,而不必在每次为路径设置颜色时都创建新路径?
解决方案
推荐阅读
- python - Tensorflow 使用 from_tensor_slices 从目录中读取数据不起作用
- python - django 中的 HTML 运算符
- python - 在 index.html 中看不到博客文章
- javascript - 无法从对象中获取值
- java - 当 mouseX 和 mouseY 坐标匹配约束时,新的覆盖不会保留 - 处理 3
- nlp - 斯坦福核心 NLP 树解析器句子限制错误 - 建议?
- swiftui - 更改披露按钮箭头颜色
- java - 我有一个 int 格式的日期 DDMMYYYY,我怎样才能分隔日月年
- flutter - Flutter 计算 RichText Widget 的高度
- elasticsearch - 基于字段的elasticsearch中的去重结果