코틀린 스탑워치 기능 완성! (앱 만들기#10)

반응형

저희는 어제 버튼을 클릭했을 때, 시간이 가는 것까지 해봤습니다.

하지만 클릭 한 번을 하고, 앞으로 계속 시간만 가면 그것은 스톱워치가 아니죠? 그냥 시계랑 똑같잖아요.

그러니까 오늘은 이제는 한번 더 클릭하면 또 다른 변수를 만들어 볼 것입니다.

바로 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)

 

안드로이드 스탑워치 시간 가는 기능 구현하기(앱 만들기#9)

먼저 저희가 궁금한 것을 구글에서 스톱워치를 찾아봅시다. 앱 만들기#8에서 했던 것, 바로 아래 스톱워치 만들기가 있기에 그것을 클릭하였습니다. 그랬더니 이와 같은 것을 해야한다고 나오는

lucky1004.com

안드로이드 타이머 함수 kotlin timer(앱 만들기#8)

 

안드로이드 타이머 함수 kotlin timer(앱 만들기#8)

안드로이드 타이머 함수 kotlin timer에 대해서 오늘은 좀 알아보겠습니다. 그러면서 오늘은 시간을 재는 알고리즘을 만들어 보려고 합니다. 스톱워치처럼, 시작과 끝의 시간을 재는 것이지요. 어

lucky1004.com

android studio설치 다운로드하기 안드로이드 앱 만들기#1

 

android studio설치 다운로드하기 안드로이드 앱 만들기#1

안드로이드 스튜디오 설치 다운로드하기 안드로이드 앱 만들기#1입니다. 오늘부터 코딩에 대해서 좀 배워보려고 합니다. 코딩에서 어떤 것을 먼저해볼까요? 그래도 저희가 가장 원하고, 그리는

lucky1004.com

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유