2012-01-05 10 views
0

私はAndroidアプリケーションのアナログ時計からに設定します。このために私はAnalogclock.javaクラスをオーバーライドし、Ontoucheventリスナを確立しました。私はthis methodthis formulaの順に、得られた座標から時分と分針の角度を計算しました。今私は手を新しい位置に動かすことができます。そして、私は針から新しい角度を取り出すこともできます。これは同じのためのコードです:アンドロイドのアナログ時計で時計の針の角度が分かっている時間を知るには

case MotionEvent.ACTION_MOVE: 
     x = (int)event.getX(); 
     y = (int)event.getY(); 
     double dx = x - minuteRect.centerX();  
     double dy = -(y - minuteRect.centerY()); 
     double inRads = Math.atan2(dy,dx);  

     if (inRads < 0) 
      inRads = Math.abs(inRads); 
     else 
      inRads = 2*Math.PI - inRads;  

     double newDegree = Math.toDegrees(inRads); 
     if(isMove()){ 
      setAngle(newDegree); 
      invalidate(); 
     } 

私は今、針がを移動している時間を設定にしたいです。 可能な方法はありますか座標から時間を計算するか、2本の針の間の角度から計算します

答えて

1

私は、コードを知らないが、数学は難しいことではありません。

除算が2PIによって時針の角度は、12掛けると切り捨て、あなたは時間を持っています。 分針の角度を2PIで割り、60を掛けて切り捨てると分があります。

例:6:15:

  • 時角はPIよりももう少しです。 (PI/2PI) * 12 = 6
  • 微小角度はPI/2です。 ((PI/2)/2PI) * 60 = 15
+0

しかし、私は2本の針の間に角度があります。時間の角度を得るために、私が見た式は1/2(60 * Hr + Min)でした。しかし私の場合、私は更新された分を持っていません。私は上記のコードの針とコーディネートの間の角度を時計に合わせます - – JaveDeveloper

+0

あなたの場合、どのようにPI/2が分の角度であることが分かりましたか?時角としてのPIと? – JaveDeveloper

+0

正のy軸を基準(すなわち12時)とし、6時15分の場合は針の角度をpi、針の角度をPI/2とする。 –

関連する問題