【Mac・Android Studio】ストップウォッチを作ってみる その9〜ボタン非活性

Android Studio
スポンサーリンク

こんにちは。

今回は、ストップウォッチのボタン非活性処理を追加します。

非活性は、ボタンは見えるけれども押せない処理しない状態です😀

最初は、setVisibility(View.INVISIBLE)を使って作成していましたが、
これはボタン非表示の処理でした💦
非活性にはsetEnabled(false)を使用します。
活性にする場合には、setEnabled(true)を使います。

では、MainActivity.javaにコードを追加しましょう😁

↓ まず、onCreate関数の中、ボタン押下の処理が呼ばれる前に
  ストップボタンとリセットボタンを非活性にします。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 画面のテキスト情報を取得
text = findViewById(R.id.textView);
// スタートボタン情報を取得
staBtn = findViewById(R.id.button);
// ストップボタン情報を取得
stoBtn = findViewById(R.id.button2);
// リセットボタン情報を取得
reseBtn = findViewById(R.id.button4);

// ストップボタンを非活性
stoBtn.setEnabled(false);
// リセットボタンを非活性
reseBtn.setEnabled(false);

// スタートボタンが押下された時の処理
・・・・・(処理略)・・・・・

↓ 次は、スタートボタンが押された時の処理です。
  スタートボタン押下後は、ストップボタンを活性にします。

// スタートボタンが押下された時の処理
staBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick (View view) {
// タイマークラス未実行であることを判定
if(null == watchTimer ){

・・・・・(処理略)・・・・・

// ストップボタンを活性
stoBtn.setEnabled(true);
// カウントアップクラス(Timertask)の初期化処理
・・・・・(処理略)・・・・・

}
}
});

↓ お次は、ストップボタン押下時の処理です。
  ストップボタンが押された時は、リセットボタンを活性にします。

// ストップボタンが押下された時の処理
stoBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
// タイマーが実行されていることを確認
if (null != watchTimer) {
・・・・・(処理略)・・・・・

// リセットボタンを活性
reseBtn.setEnabled(true);
}
}
});

↓ リセットボタンが押された時の処理です。
  リセットボタンが一回押された後は、初期状態に戻したいので、
  ストップボタンとリセットボタンを再び非活性にします✌

// リセットボタンが押下された時の処理
reseBtn.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
・・・・・(処理略)・・・・・

// ストップボタンを非活性
stoBtn.setEnabled(false);
// リセットボタンを非活性
reseBtn.setEnabled(false);
}
});

では、エミュレータで動かしてみましょう。

↓ まずは起動後の画面です。
  ストップボタンとリセットボタンが非表示です。
  ここで、スタートボタンを押してみましょう。
非表示画面1

↓ スタートボタン押した後です。
  ストップボタンが活性になります。
非活性画面2

↓ ストップボタンを押した後の画面です。
  リセットボタンが活性になります。
非活性画面3

↓ リセットボタン押した後の画面です。
  ストップボタンとリセットボタンが非活性になります。
  カウンターもStart!に戻りますね。
非活性画面4

非活性処理に関しては、決まっている処理があるので、
それを仕様に合わせたタイミングで呼べば簡単に処理されました✌

今日はここまで🤚

では、また次回。

コメント

タイトルとURLをコピーしました