이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다.
안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다.
- 설명 -
1. 스톱워치를 보여주는 Chronometer
2. 스톱워치 시작하는 Button
3. 스톱워치 정지하는 Button
4. 스톱워치 초기화하는 Button
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<Chronometer
android:id="@+id/chronometer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center_horizontal"
android:textSize="30sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/startBtn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="start" />
<Button
android:id="@+id/stopBtn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="stop" />
<Button
android:id="@+id/resetBtn"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:text="reset" />
</LinearLayout>
</LinearLayout>
- 설명 -
1. chronometer.base
스톱워치 기본 설정
2. SystemClock.elapsedRealtime()
부팅하고 이후 시간
3. chronometer.start()
스톱워치 시작
4. chronometer.stop()
스톱워치 정지
5. viewMode(mode: String)
버튼 활성화/비활성화 함수
class MainActivity : AppCompatActivity() {
lateinit var startBtn: Button
lateinit var stopBtn: Button
lateinit var resetBtn: Button
var running: Boolean = false // 상태
var pauseTime = 0L //멈춤 시간
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val chronometer: Chronometer = findViewById(R.id.chronometer)
startBtn = findViewById(R.id.startBtn)
stopBtn = findViewById(R.id.stopBtn)
resetBtn = findViewById(R.id.resetBtn)
//화면 설정
viewMode("stop")
//시작 이벤트
startBtn.setOnClickListener {
//정지 상태일때만 실행
if(!running){
//기본 셋팅
chronometer.base = SystemClock.elapsedRealtime() - pauseTime
//시작
chronometer.start()
//화면 설정
viewMode("start")
}
}
//정지 이벤트
stopBtn.setOnClickListener {
//실행 상태일때만 실행
if(running){
//정지
chronometer.stop()
//정지 시간 저장
pauseTime = SystemClock.elapsedRealtime() - chronometer.base
//화면 설정
viewMode("stop")
}
}
//초기화 이벤트
resetBtn.setOnClickListener {
//기본 셋팅
chronometer.base = SystemClock.elapsedRealtime()
//정지 시간 초기화
pauseTime = 0L
//정지
chronometer.stop()
//화면 설정
viewMode("stop")
}
}//onCreate
//화면 설정
private fun viewMode(mode: String){
//활성화 처리
if(mode == "start"){
startBtn.isEnabled = false
stopBtn.isEnabled = true
resetBtn.isEnabled = true
running = true
}else{
startBtn.isEnabled = true
stopBtn.isEnabled = false
resetBtn.isEnabled = false
running = false
}
}
}
2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법
2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정
2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법
[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part2 기능 구현 (1) | 2022.10.05 |
---|---|
[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성 (0) | 2022.10.04 |
[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법 (0) | 2022.09.30 |
[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part2 - 화면 및 기능 (0) | 2022.09.29 |
[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정 (0) | 2022.09.28 |
댓글 영역