▶ 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="173dp"
android:layout_marginTop="79dp"
android:layout_marginEnd="181dp"
android:text="남은시간"
android:textSize="32sp"
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_marginStart="143dp"
android:layout_marginTop="80dp"
android:layout_marginEnd="143dp"
android:text="탭한 갯수"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtTimer" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="160dp"
android:layout_marginTop="100dp"
android:layout_marginEnd="151dp"
android:text="Tab!!!"
android:textSize="32sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.647"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtCount" />
</androidx.constraintlayout.widget.ConstraintLayout>
▶ mainActivity 파일
package com.example.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;
private void showAlertDialog(){ // 3개 제공해준다
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("타이머 끝~");
builder.setMessage("클릭한 갯수: "+count);
// 이 다이얼 로그의 외곽 부분을 눌렀을 때, 사라 지지 않도록 하는 코드
builder.setCancelable(false);
builder.setPositiveButton("다시 도전", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
count = 0;
isFinish = false;
txtCount.setText(count+ "번");
timer.start();
}
});
builder.setNegativeButton("종료", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// 현재의 액티비티(MainActivity)를 종료시키는 코드! 앱을 종료시키는게 아님
finish();
}
});
builder.show();
}
@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);
// 타이머를 만든다.
// 밀리새컨즈라 7초라면 7000이라 써야한다 두번째 파라미터는 몇초씩 줄어드나라는뜻
timer = new CountDownTimer(7000,1000) {
@Override
public void onTick(long 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;
}
count = count + 1;
txtCount.setText(count+ "번");
}
});
timer.start();
}
}
더보기
private void showAlertDialog(){ // 3개 제공해준다
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("타이머 끝~");
builder.setMessage("클릭한 갯수: "+count);
// 이 다이얼 로그의 외곽 부분을 눌렀을 때, 사라 지지 않도록 하는 코드
builder.setCancelable(false);
builder.setPositiveButton("다시 도전", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
count = 0;
isFinish = false;
txtCount.setText(count+ "번");
timer.start();
}
});
+ 메모리 관련 추가설명 필요
'모바일 프로그래밍(Android Studio)' 카테고리의 다른 글
데이터를 파일로 저장해서 불러오기 (0) | 2023.07.11 |
---|---|
The activity lifecycle(활동 수명 주기) (0) | 2023.07.10 |
퀴즈 앱 만들기 (0) | 2023.07.07 |
UI 위젯 기초, 실행화면 보기 (0) | 2023.07.06 |
앱 생성 기초 (0) | 2023.07.05 |