3

私は現在、このスニペットが外側とアンドロイドウェアウォッチフェイスの周りの目盛りを生成しています

float innerMainTickRadius = mCenterX - 35;
            for(int tickIndex = 0; tickIndex < 12; tickIndex++) {
                float tickRot = (float) (tickIndex * Math.PI * 2 / 12);
                float innerX = (float) Math.sin(tickRot) * innerMainTickRadius;
                float innerY = (float) -Math.cos(tickRot) * innerMainTickRadius;
                float outerX = (float) Math.sin(tickRot) * mCenterX;
                float outerY = (float) -Math.cos(tickRot) * mCenterX;
                canvas.drawLine(mCenterX + innerX, mCenterY + innerY, mCenterX + outerX, mCenterY + outerY, mTickPaint);
            }

丸いウォッチフェイスでは目盛りをうまく生成しますが、正方形では次の正方形の丸目盛り ようになります。スクエアウォッチフェイス

これを行う標準的な方法はありますか?もうトリガーは使えないと思います…

4

2 に答える 2

1

角度は現在位置の関数です。この場合、閉じたフォームを取得するためのトリックはすぐにはわかりません。しかし、最も一般的なケースでは、各目盛りの位置を保存するだけで終わり、その点と中心を通る線を描くだけです。したがって、2 番目の角度 i はちょうど

theta(i)=arctan(y_pos(i) / x_pos(i))

中心の座標が (0,0) であると仮定します。この場合、面は 90 度ごとに周期的であり、対角線についても対称であるため、8 つの連続するティックの位置を保存するだけで済みます。

于 2016-04-17T07:35:51.953 に答える