2016-07-16 14 views
1
  1. T1:昨日作成されたカレンダーオブジェクト。
  2. T2:カレンダーオブジェクトが作成されました。
  3. T3:明日作成された予定表オブジェクト。

T2がT3に達すると進捗バーが進捗します。私はlong(getTimeInMillis)をキャストして分割していました...最終的にintを取得しています。動いていない。 次のような関数があります:int CurrentProgressBarValue(カレンダーT1、カレンダーT2、カレンダーT3){}、今は本当に役に立ちます!ですから、私はxmlでmaxValueを100に設定し、関数は比例する整数を返します。標準化時間InMillisプログレスバーへの入力の差

public int getNormalizedProgress(long max, long current){ 
    double d = (double)current/max; 
    d = d * 100; 
    Double D = new Double(d); 
    return D.intValue(); 
} 
+0

をあなたはこれを試してみたこれでコードを共有できますか? –

+0

もしT1とT3が決してミリ秒以上の間に 'Integer.MAX_VALUE'秒以上離れていないことを保証できれば、T1の時間を減算して 'int'にキャストすることができます – wakjah

+0

T1 T3はさらに離れています – jakeN

答えて

0

私はあなたがやろうとしているものを正しく理解していれば、あなたはT1とT2との間にミリ秒の数、およびT1とT3間のミリ秒数を見つけ、その後、比率を見つける必要があります。

millisは長いため、T1とT3の違いがintより大きい場合は、longとの違いを行う必要があります。あなたは10進数の結果を得ることができるように二重で除算を行う必要があります。

T1、T2、およびT3は、long型と仮定すると、以下のように包括0から100まであなたの数を与える:

(((t2 - t1)*1.0)/((t3 - t1)*1.0) * 100).intValue