実際の進捗状況を表示していない単純なプログレスホイール(アプリケーションが何かをやっているということ)は、単純なアニメーションイメージ(例えばhttp://www.ajaxload.info/で生成)をお勧めします。
アニメーション画像/ gif形式はオプションではない場合:
簡単な解決策は、複数の画像を作成し、循環方式でそれらを置き換えることになります。
Timer updateAnim = new Timer() {
@Override
public void run() {
currentImage = (currentImage + 1) % NO_IMAGES;
setVisibilities();
this.schedule(UPDATE_TICK);
}
};
private void setVisibilities() {
img1.setVisible(false);
img2.setVisible(false);
switch (currentImage) {
case 0:
img1.setVisible(true);
break;
case 1:
img2.setVisible(true);
break;
}
}
setVisibilities()
だけで目に見えないと、目に見える他のすべてに現在のイメージを設定します:私は基本的に、あなたが自分自身を呼び出すタイマーが作る、最近これを使用していました。私はこれを経験しましたが、イメージURLを切り替えるよりも速くなりました(1つのイメージを使って、img.setURL(String url);
と呼んでいます)。
これでupdateAnim.schedule(UPDATE_TICK);
が呼び出され、実行されます。
(ブラウザが最適化できるので)CSSアニメーション(1つのイメージを作成して回転)を使用するのが最も速いと思いますが、おそらく最も複雑なものです私が思うよりも実際にはもっとシンプルだということです)。 CSS回転アニメーションについては、thisの投稿をご覧ください。
実際の進捗バー(実際に進捗状況を表示します)を作成するには、進捗状況に応じて呼び出されるコールバックが必要です。この進行状況コールバックであなたの画像/ CSSトランジションを更新するだけです。
出典
2012-01-19 00:27:20
dom
明らかな理由はありますか? :)サーバー側のコードは通常msで応答しますので、プログレスバーを追加して100ms後にそれを削除すると、ちらつきのように見えます – milan
データの複雑さのためにサーバーの応答時間が最大3秒必要です。私はSQLを後で最適化しようとしますが、いくつかの呼び出しでは100ms未満になることはありません。あなたは私のことを考えさせました。私は、必要がないところで進歩を見せないようにしようとしますが、サーバーコールの中には、私が最も必要とするものがあります。 –