1

カスタム ビューを実装しました。このビューは非常にシンプルで、2 つの状態 (境界線ありと境界線なし) があり、ontouch イベントで切り替わります (押すと境界線があり、上に押すと境界線がありません)。

これは問題なく進んでいます。ユーザーにシーケンスを表示したいときに問題が発生します(したがって、タッチイベントを無効にし、ビューステートを手動で変更します)。

私は自分のレイアウトにそのタイプのビューを 4 つ持っています。私が望むのは、ユーザーに見えるようにそのビューの状態を切り替えることだけです。

MyView v1 = (MyView)findViewById(...)
MyView v2 = (MyView)findViewById(...)
MyView v3 = (MyView)findViewById(...)
MyView v4 = (MyView)findViewById(...)

v1.switchMode()
v2.switchMode()
v3.switchMode()
v4.switchMode()

このスイッチは、ユーザーに表示されるまでしばらく (1 秒) 保持する必要があります。モードは、ブール変数を通じて実装されます。私の実装は次のとおりです。

public void switchMode()
  this.mode = false;
  this.invalidate();
  try {
Thread.sleep(1000);
  } catch (InterruptedException e) {
e.printStackTrace();
  }
  this.mode = true;
  this.invalidate();
}

私の睡眠はスレッド全体の睡眠のようです。そのため、ビューは再描画されず、応答なしで 4 秒間保持され、ビューが変更されます。

この単純な状態の切り替えを実装する方法についての手がかりはありますか?

前もって感謝します

4

1 に答える 1

1

その問題を解決する良い方法を見つけました。CountDownTimer は私が望むように機能します: 任意のアクションにタイマーを設定するためのインターフェイスと、そのアクションにいくつかの変動性を導入するためのティック コントローラーを提供します (私の場合、希望する時間にわたってモードを変更するために、常に 2 つのティックを設定できます) )。

于 2012-04-06T10:23:16.287 に答える