0

動作する必要がありますが、動作していません。アプリを起動すると、ボタンが表示されます。ここで、ボタンが表示され、表示されないようにしたいと考えています。

for (k = 0; k < abc.length; ++k) {
try {

    if (k%2 != 0) {
        button.setVisibility(View.VISIBLE);
    } else {
        button.setVisibility(View.GONE);
    }

    Thread.sleep(sleepMilliseconds);

} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

それとも、for ループが速すぎて、Android で表示できないのでしょうか。何も起こりません。ボタンが見えます。

私は Thread.sleep() を持っています。Sleep Milliseconds は、たとえば 100、300 -> ランダムです。また、それほど速くはありません。

4

4 に答える 4

3

私は Thread.sleep() を持っています。Sleep Milliseconds は、たとえば 100、300 -> ランダムです。また、それほど速くはありません。

あなたはUI スレッドで眠っています。それが問題です。UI スレッドの残りの部分にその作業を行わせていません。

UI を定期的に更新する場合は、代わりにタイマーを使用するか、場合によってHandler.postDelayedは各更新の最後に呼び出して、次の更新をスケジュールする必要があります。または、プロパティ アニメーション システムを使用します。

于 2012-09-01T09:53:57.677 に答える
1

WebnetMobile.com と Jon Skeet は正しいです。求めている効果にはタイマーまたはアニメーションを使用する必要があります。

しかし、あなたが本当にこれをあなたのやり方でやりたいのなら、次のようにしてください:

for (k = 0; k < abc.length; ++k) {
try {

    if (k%2 != 0) {
        button.setVisibility(View.VISIBLE);
    Thread.sleep(sleepMilliseconds);

   } else {
        button.setVisibility(View.GONE);
     Thread.sleep(sleepMilliseconds);
    }


} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

これらのミリ秒を 500 以上のミリ秒に設定して視覚的に確認します

于 2012-09-01T10:02:37.420 に答える
1

これを試してください、助けてください..

クラス変数を宣言し、このクラスとこのメソッドをアクティビティ クラスに追加します

//variabe
boolean b;

//class
class RefreshHandler extends Handler {
    @Override  
    public void handleMessage(Message msg) {  
      _yourActivity.this.updateUI();          
    }  

    public void sleep(long delayMillis) {  
      this.removeMessages(0);  
      sendMessageDelayed(obtainMessage(0), delayMillis);  
    }

    public void stop(){
        super.sendEmptyMessage(0);
    }

}

//method
public void updateUI() {

 if (b) {
    button.setVisibility(View.VISIBLE);
    b=false;
 } else {
    button.setVisibility(View.GONE);
    b=true;
 }
  mRedrawHandler.sleep(1000);
}

これを使用して、ボタンの可視性と非可視性を開始します

mRedrawHandler = new RefreshHandler(); 
updateUI1();

を使用してこれを停止できます

mRedrawHandler.removeMessages(0);
于 2012-09-01T10:06:11.160 に答える
0

ボタンを点滅させたい場合は、アニメーションを適用して、アルファチャンネルを変更します。

于 2012-09-01T09:55:28.677 に答える