美好的一天。我爲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因爲我是在循環中進行的,因爲我必須每次都選擇最後一種顏色來繪製。無論如何,你能幫助我嗎?即使是一個小的參考對我來說也是金子,因爲在互聯網中確實沒有任何東西。
你試過單色路徑多色嗎? –
嗯,這是怎麼實現的?那是我真正要求的。 –
我需要那個! –