저희는 어제 버튼을 클릭했을 때, 시간이 가는 것까지 해봤습니다.
하지만 클릭 한 번을 하고, 앞으로 계속 시간만 가면 그것은 스톱워치가 아니죠? 그냥 시계랑 똑같잖아요.
그러니까 오늘은 이제는 한번 더 클릭하면 또 다른 변수를 만들어 볼 것입니다.
바로 STOP이 되는 기능. 즉, 시계가 돌아가다가 클릭하면 멈춤이 되는 기능을 만들어보겠습니다.
코틀린 스탑워치 기능 완성!
이것이 기본입니다.
먼저 변수를 만들어 보겠습니다.
is runnig 과 cancel로 만들어볼게요.
이 변수를 넣어보겠습니다. 처음에는 시간이 가고 있지 않으니까요.
val isRunning = false
그리고 버튼을 눌렀을 때 바뀌어야겠죠?
그러면 btn.setOnClickListener 이쪽 아래에 이스 러닝을 넣겠습니다.
isRuning = !inRunning
! 는 반대라는 의미로 flase의 반대인 True 가 되겠죠? 클릭하면 시작하겠다는 것입니다.
그렇다면, is러닝이 처음에는 가동하지 않았다가, 클릭하는 순간 트루가 되죠?
이런 식으로 작성되었습니다.
그리고 if를 넣어봅시다.
if isrunning이 트루일 때, 돌아가는 것이 잖아요?
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val isRunning = false
var sec : Int = 0
val abc: TextView = findViewById(R.id.text_1)
val btn: Button = findViewById(R.id.btn_1)
btn.setOnClickListener {
isRunning = !isRunning
if (isRunning == true){
timer(period = 1000,)
{
sec++
runOnUiThread {
abc.text = sec.toString()
}
}
}
그렇다면 이런 함수가 나오겠죠? 완성입니다.
그리고 else로 나머지 경우를 묶어두시면 됩니다.
그럼 이제 else 나머지로 나머지 경우에는 캔슬한다를 넣어봅시다.
val isRunning = false
var sec : Int = 0
val abc: TextView = findViewById(R.id.text_1)
val btn: Button = findViewById(R.id.btn_1)
btn.setOnClickListener {
isRunning = !isRunning
if (isRunning == true) {
timer(period = 1000,)
{
sec++
runOnUiThread {
abc.text = sec.toString()
}
}
} else {timer.cancel()}
}
}
그리고 timerTask를 넣어줘야 합니다. 블로그에 있는 것을 인용해서 가지고 와보겠습니다.
위에 변수를 러닝 위에
var timerTask: Timer? = null
널러블을 넣어주시고, 아래
if (isRunning == true) {
timerTask = kotlin.concurrent. timer(period = 1000,)
if 트리 아래 timerTask를 넣어주었습니다.
또한
else {timerTask?.cancel()}
else로 묶어둔 것도 이와 같이 바꿔주었습니다.
- 완성은 이것입니다.
class MainActivity() : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var timerTask: Timer? = null
var isRunning = false
var sec : Int = 0
val abc: TextView = findViewById(R.id.text_1)
val btn: Button = findViewById(R.id.btn_1)
btn.setOnClickListener {
isRunning = !isRunning
if (isRunning == true) {
timerTask = kotlin.concurrent.timer(period = 1000,) {
sec++
runOnUiThread {
abc.text = sec.toString()
}
}
} else {
timerTask?.cancel()
}}}}
만드는데 } 이거 안 붙여서, 약간의 문제가 좀 있었습니다. 만 완성본입니다.
아우 timerTask뒤에도?를 붙여야 하네요. 널러블 때문에 그런 것 같습니다.
어쨌거나 위가 완성본입니다.
실행을 해볼까요?
실행을 하니 스톱워치가 제대로 작동되고 있음을 확인 할 수 있습니다.
버튼을 누르니까 시간이 흐르고, 다시 한번 누르니까 멈춥니다!
스탑워치 완성!!
그 외에도 여러 코딩이 있으니, 와서 확인해보세요!
안드로이드 스탑워치 시간 가는 기능 구현하기(앱 만들기#9)
안드로이드 타이머 함수 kotlin timer(앱 만들기#8)
android studio설치 다운로드하기 안드로이드 앱 만들기#1
'코딩 어플만들기' 카테고리의 다른 글
안드로이드 코틀린 랜덤 숫자 만들기(앱만들기#12) (0) | 2022.03.22 |
---|---|
안드로이드 스튜디오 스톱워치 0.01초 단위까지 만들기 (0) | 2022.03.20 |
안드로이드 스탑워치 시간 가는 기능 구현하기(앱 만들기#9) (0) | 2022.03.16 |
안드로이드 타이머 함수 kotlin timer(앱 만들기#8) (0) | 2022.03.15 |
안드로이드 스튜디오 버튼에 기능 넣기(앱 만들기#7) (0) | 2022.03.14 |