[kotlin] 코틀린 데이터 바인딩을 사용하여 타이머를 구현하는 방법
코틀린 데이터 바인딩은 안드로이드 앱에서 UI와 비즈니스 로직을 쉽게 연결할 수 있도록 도와주는 라이브러리입니다. 이를 활용하여 타이머를 구현하는 방법에 대해 알아보겠습니다.
1. 데이터 바인딩 설정
먼저, 앱 모듈의 build.gradle
파일에 다음과 같이 데이터 바인딩을 활성화해줍니다.
android {
...
buildFeatures {
dataBinding true
}
}
그리고 XML 레이아웃 파일의 최상위 레이아웃 태그에 다음과 같이 데이터 바인딩 레이아웃 태그를 추가합니다.
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="viewModel"
type="com.example.TimerViewModel" />
</data>
<!-- Your layout content here -->
</layout>
2. 타이머 뷰 모델 작성
다음으로, 타이머 뷰 모델 클래스를 작성합니다.
class TimerViewModel : ViewModel() {
private val _currentTime = MutableLiveData<Long>()
val currentTime: LiveData<Long>
get() = _currentTime
private var timer: CountDownTimer? = null
fun startTimer(duration: Long) {
timer = object : CountDownTimer(duration, 1000) {
override fun onTick(millisUntilFinished: Long) {
_currentTime.value = millisUntilFinished / 1000
}
override fun onFinish() {
// 타이머 종료 처리
}
}
timer?.start()
}
fun stopTimer() {
timer?.cancel()
}
}
3. XML 레이아웃에서 데이터 바인딩 적용
이제 XML 레이아웃 파일에서 데이터 바인딩을 적용하여 타이머를 표시합니다.
<TextView
android:text="@{viewModel.currentTime.toString()}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
4. 액티비티 또는 프래그먼트에서 데이터 바인딩 초기화
마지막으로, 액티비티 또는 프래그먼트에서 데이터 바인딩을 초기화하고 타이머 뷰 모델과 연결합니다.
val binding: YourLayoutBinding = DataBindingUtil.setContentView(this, R.layout.your_layout)
val viewModel = TimerViewModel()
binding.viewModel = viewModel
이제 코틀린 데이터 바인딩을 사용하여 간단하게 타이머를 구현할 수 있습니다.
참고 자료: 안드로이드 공식 문서 - 데이터 바인딩
제안 및 본문 수정은 코트린 플레이그라운드를 참조하여 작성되었습니다.