この答えの最も簡単な説明は、白い点の座標を見つけようとしているということです。濃い赤は、描かれた円 (濃い青) の上に描かれた円弧です。
より長い説明: 私は拡張View
し、キャンバス上に円を描いているクラスを持っています (キャンバスの幅と高さは同じです):
canvas.drawArc(rectF, 0, 360, true, paint); // mOvals is a RectF object with 4 coordinates
次に、幅 N パーセント (この場合は 225 としましょう) の弧を描きます。円弧は -90 度 (キャンバスの 0 度は 3 時を意味するため) から始まり、N 度 (この例では 225) に「迷走」します。
X/Y 座標または残りの円弧 (赤い円弧で覆われていない領域、つまり N ~ 360 の間) の中心を計算しようとしています。
円の半径は canvasWidth/2 です。
赤い弧を描く方法は次のとおりです。
long arcEnd = (360 * fractionNumber) / totalNumber;
canvas.drawArc(rectF, -90, arcEnd, true, paint);