おはようございます。私はアンドロイド用の波のような波を作成しており、大きな問題に遭遇しています。波が4色になる必要があります。私はそれを行うことができますが、私は同じパスの4つの異なる色を与えることができる方法はありません。それは画面の開始から画面の終わりに移動する1つの単一のパスだと思います、私はその行が必要です主に私は4つの部分にパスを分割し、各部分の色を描画しなければならなかったが、Googleや他のソースは私に何かを与える(私が欲しいものに類似したものは見つけられませんでした)。 一方私は実際に私が線を描いているコードを投稿しています。複数の色のシングルパス用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ためではありません私はループでそれをやっています。いつも最後の色が引き出されるようになっています。あなたは私を助けてくれますか?インターネットには何もないので、小さな参考資料でさえ金です。
複数の色で単一のパスを使用しようとしましたか? –
ummmそれはどのように達成されましたか?私は実際に何を求めているのですか? –
私はそれを正確に必要とします! –