たくさんの線を描くと、アプリが描画を完了するのに時間がかかります。私の目標は、a1[] のポイントを接続して線を形成することです。これを行うより速い方法はありますか?助けてください!
> $ for (int i = 0; i < x.length - 1; i++) {
> _canvas.drawLine(a1[i].x, a1[i].y, a1[i + 1].x, a1[i + 1].y,_paint);}
ドローラインを使用します。ポイントを float[] にパックし、行の各ポイントに対して 2 つのポイントを指定してから、次のようにします。
if (count >= 4) {
if ((count & 2) != 0) {
canvas.drawLines(pointlist, 0, count-2, linePaint);
canvas.drawLines(pointlist, 2, count-2, linePaint);
}
else {
canvas.drawLines(pointlist, 0, count, linePaint);
canvas.drawLines(pointlist, 2, count - 4, linePaint);
}
}
ここで、count は、ポイントの float[] で使用可能な長さの数です。ドローラインはセグメントごとに 4 つのフロートで移動しますが、そのようにずらすと、2 倍のメモリを無駄にすることなく目的の結果が得られ、必要に応じてポイントを効果的に移動できます。
最初にパスを作成してから、_canvas.drawPath() を呼び出してみてください。
Path p = new Path();
p.moveTo(a1[0].x, a1[0].y);
for (int i = 1; i < x.length; i++) {
p.lineTo(a1[i].x, a1[i].y);
}
_canvas.drawPath(p, _paint);