美好的一天。我为Android创建了一个类似波浪的siri,我遇到了一个大问题。我需要波形为4种颜色。让我们假设我只有一条线正在绘制屏幕相应的语音分贝。总之,我能够做到这一点,但我无法为同一路径提供4种不同的颜色。假设它是1个单一路径,从屏幕开始移动到屏幕结束,我需要该行有4种不同的颜色,主要是我必须将路径分成4个部分并绘制每个部分的颜色,但谷歌和其他任何源都不给我任何东西(甚至没有发现任何与我想要的相似的东西)。 同时我发布的代码实际上是在画线。单一路径的多种颜色Android
for (int l = 0; l < mWaveCount; ++l) {
float midH = height/2.0f;
float midW = width/2.0f;
float maxAmplitude = midH/2f - 4.0f;
float progress = 1.0f - l * 1.0f/mWaveCount;
float normalAmplitude = (1.5f * progress - 0.5f) * mAmplitude;
float multiplier = (float) Math.min(1.0, (progress/3.0f * 2.0f) + (1.0f/3.0f));
if (l != 0) {
mSecondaryPaint.setAlpha((int) (multiplier * 255));
}
mPath.reset();
for (int x = 0; x < width + mDensity; x += mDensity) {
float scaling = 1f - (float) Math.pow(1/midW * (x - midW), 2);
float y = scaling * maxAmplitude * normalAmplitude * (float) Math.sin(
180 * x * mFrequency/(width * Math.PI) + mPhase) + midH;
// canvas.drawPoint(x, y, l == 0 ? mPrimaryPaint : mSecondaryPaint);
//
// canvas.drawLine(x, y, x, 2*midH - y, mSecondaryPaint);
if (x == 0) {
mPath.moveTo(x, y);
} else {
mPath.lineTo(x, y);
// final float x2 = (x + mLastX)/2;
// final float y2 = (y + mLastY)/2;
// mPath.quadTo(x2, y2, x, y);
}
mLastX = x;
mLastY = y;
}
if (l == 0) {
canvas.drawPath(mPath, mPrimaryPaint);
} else {
canvas.drawPath(mPath, mSecondaryPaint);
}
}
我试图改变if (l == 0) { canvas.drawPath(mPath, mPrimaryPaint); }
颜色,但如果我在这里改变它,没有结果可言,无论是线都是独立的,不动可言,但它应该,无论是颜色不适用,propably因为我是在循环中进行的,因为我必须每次都选择最后一种颜色来绘制。无论如何,你能帮助我吗?即使是一个小的参考对我来说也是金子,因为在互联网中确实没有任何东西。
你试过单色路径多色吗? –
嗯,这是怎么实现的?那是我真正要求的。 –
我需要那个! –