2017-08-29 18 views
0

下の画像では、時計の面に表示された目盛りを描く方法を理解しようとしています。私は線を描く方法を知っていますが、絵のように「テーパ」線を描く方法は不明です。 Android Wearでこれをどのように達成できますか? Pathを作成する必要があると思いますが、Pathの座標を生成する方法はわかりません。非正方形の目盛りを描く方法

ticks

+0

ベクターやその他のpngを使用するとどうなりますか? – cutiko

+0

私はむしろ可能ではないと思います。私がビットマップを読み込むことに対処したくない理由はありません。 – Nxt3

答えて

2

あなたはこのような何かをする必要がPathを使用するには:

Path path = new Path(); 

// Start at the top left corner 
path.moveTo(screenCenterX - halfMarkerTopWidth, topMargin); 

// Draw a line to the top right corner 
path.lineTo(screenCenterX + halfMarkerTopWidth, topMargin); 

// Draw a line to the bottom right corner 
path.lineTo(screenCenterX + halfMarkerBottomWidth, topMargin + markerHeight); 

// Draw a line to the bottom left corner 
path.lineTo(screenCenterX - halfMarkerBottomWidth, topMargin + markerHeight); 

// Close the Path (will automatically draw a line back to the top left corner) 
path.close(); 

次に、あなたのパス12回を描画し、ちょうどあなたがそれを描くたび間キャンバスに30度回転させます。

canvas.save(); 
for (int i = 0; i < 12; i++) { 
    canvas.rotate(30, screenCenterX, screenCenterY); 
    canvas.drawPath(path, paint); 
} 
canvas.restore(); 
+0

あなたのソリューションは機能しますが、私は今12回それを描画する方法を考え出すのが難しいです。 'canvas.rotate(30) 'を呼び出すと、期待どおりの結果が得られません。 – Nxt3

+0

これらのパスの1つを現在の時間にどのように向けることができますか? – Nxt3

+1

それを描画するためのコードが追加されました。 「現在の時間へのこれらのパスの1つを指す」とはどういう意味ですか?あなたの質問のスクリーンショットに表示されるハイライトエフェクトの場合は、現在の時間に対応するペイントを描画するときにペイントの色を変更するだけです。現在の時間を指し示すだけの場合は、その時間の角度を計算します。 6時は180度になり、その値を使ってキャンバスを一度回転させます。 – TofferJ

関連する問題