あなたはほとんど働いてそれを持っていました。あなたは私はあなたが修正高さを割り当てる必要があることに疑問から想定しCanvas.drawArc
(documentation)
使用することができ、
// Limit the drawable region of the canvas (saving the state before)
canvas.save();
canvas.clipRect(new Rect(0, canvas.getHeight() - 70, canvas.getWidth(), canvas.getHeight()));
Path path = new Path();
path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
path.addCircle(canvas.getWidth()/2, canvas.getHeight()/2, canvas.getHeight()/2, Path.Direction.CW);
path.addRect(0, canvas.getHeight() - 70, canvas.getWidth(), canvas.getHeight(), Path.Direction.CW);
canvas.drawPath(path, paint);
// Restore the canvas to the saved state to remove clip
canvas.restore();
// Draw more things on the canvas...
Alternativelly:あなたは自分の部門を描画する描画する前にキャンバスをクリップしてPath.FillType.INVERSE_EVEN_ODD
を使用する必要がありますあなたのセクターのために、その高さに基づいてstartAngle
とsweepAngle
(drawArc
メソッドのパラメータ)を計算する必要があります(正方形のイメージを仮定します)。ここでは、サンプルコード(互換性のあるAPIレベル15)です。
int sectorHeigh = 70; // The height of your sector in pixels
// Compute the start angle based on your desired sector height
float startAngle = (float) Math.toDegrees(Math.asin((canvas.getHeight()/2f - sectorHeigh)/(canvas.getHeight()/2f)));
// Add the arc (calculating the sweepAngle based on startAngle)
canvas.drawArc(new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), startAngle, 2 * (90 - startAngle), false, paint);
Path
オブジェクトを作成している円弧を使用して、あなたの部門を描画するための別の方法は、使用してアークPath.addArc
(documentation)を追加し、その後Canvas.drawPath
(documentation)を描画するために使用しますそれ。
あなたの 'minSdkVersion'とは何ですか? –
私の分sdkは15 –
です。それは多分役立ちますhttp://www.curious-creature.com/2012/12/11/android-recipe-1-image-with-rounded-corners/ –