MainActivity.java

package com.bpdev.timer;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    TextView txtTimer;
    TextView txtCount;
    Button button;
    int count = 0;

    boolean isFinish = false;

    CountDownTimer timer;


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

        txtTimer = findViewById(R.id.txtTimer);
        txtCount = findViewById(R.id.txtCount);
        button = findViewById(R.id.button);

        // 타이머를 만든다. // 7000 : 7초 //
        timer = new CountDownTimer(7000, 1000) {
            @Override
            public void onTick(long l) {
                // 위의 인터벌 파라미터에 의해서 실행되는 함수다. // l에 시간이 담아져 온다.
                // 남은 시간을 화면에 표시한다!!

                long remain = l / 1000;
                txtTimer.setText(remain+"초");

            }

            @Override
            public void onFinish() {
                // 타이머가 종료될 때 실행 되는 함수이므로,
                // 종료될 때 하고 싶은 동작 코드를 여기에 작성.
                isFinish = true;
                showAlertDialog();


            }
        };

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(isFinish){
                    return;
                }
                txtCount.setText(count + "번");
                count = count + 1;

            }
        });

        // new로 공간은 만들었으니 동작을 만들자.
        timer.start();

    }

    // 알러트 다이얼로그 띄워서, 다시 도전할 지, 종료할 지 보여줄 것.
    private void showAlertDialog(){
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); // 어디에 띄울 때 컨텍스트로 알려줘야 함. ()생성자
        // 이 다이얼로그의 외곽부분을 눌렀을 대, 사라지지 않도록 하는 코드
        builder.setCancelable(false);
        builder.setTitle("타이머 종료");
        builder.setMessage("다시 도전 하시겠습니까?");
        builder.setPositiveButton("도전", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                // 처음부터 다시 시작할 수 있도록 할 것이다.
                // 남은 시간 초기값
                // 누르는 수는 0
                // 멤버변수와 로컬변수
                count = 0;
                isFinish = false;
                txtCount.setText(count+"번");
                timer.start();
            }
        });
        builder.setNegativeButton("종료", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                // 액티비티 종료!
                finish();
            }
        });
        builder.show();
    }

}

 

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtTimer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="111dp"
        android:layout_marginTop="91dp"
        android:layout_marginEnd="111dp"
        android:text="남은 시간"
        android:textSize="34sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/txtCount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="212dp"
        android:text="탭한 갯수"
        android:textSize="34sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="150dp"
        android:layout_marginTop="100dp"
        android:layout_marginEnd="150dp"
        android:text="Tab!!"
        android:textSize="34sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.617"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/txtCount" />
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

+ Recent posts