본문 바로가기
📁App Developing/Kotlin 강좌

스탑워치 메모

by Hush 2022. 7. 25.

Floating Action Button

공중에 떠있는 듯한 느낌을 주는 원형의 버튼이며, 이미지를 넣어서 디자인하는 버튼이다.

timer

일정 시간이 지날때마다 특정 코드를 실행시키고 싶다면 timer를 사용한다.

사용법은 타이머를 담을 변수를 선언한 뒤, 그 변수에 타이머를 정의하면 실행된다.

예시 코드는 다음과 같다.

private var timerTask : Timer? = null

//....

timerTask = timer(period = 10) {
    time++
    val sec = time / 100
    val milli = time % 100
    runOnUiThread {
        secTextView.text = "$sec"
        milliTextView.text = "$milli"
    }
}

일단 null로 초기화를 한 뒤, timerTask라는 변수에 timer를 담으며 실행시킨다.

위 코드는 10ms마다 중괄호 안의 코드를 실행한다.

또한, 타이머는 워커스레드에서 동작하는데, 워커 스레드에서는 UI를 조작할 수 없다.

UI를 조작하고싶다면 runOnUiThread 안에서 조작해야한다.

타이머를 종료하려면 다음과 같이 타이머를 담은 변수에 cancel 메서드를 사용하면 된다.

timerTask?.cancel()

 

동적으로 LinearLayout에 뷰 추가하기

뷰를 미리 지정해놓고 값만 제어하는게 아니라, 상황에 맞춰 뷰를 추가하는 방법을 알아보자.

LinearLayout의 addView 메서드를 활용하면 쉽게 뷰를 추가할 수 있다.

addView의 인자로 추가할 view 객체를 전달하면 된다.

두번째 인자로 뷰를 추가할 위치를 전달할 수 있으며, 기본값은 마지막인 -1일이다.

view가 많이 추가되어 화면 영역을 벗어나도 스크롤 바가 생기지 않기 때문에, 스크롤 기능을 사용하고싶다면 LinearLayout을 ScrollView로 감싸도록 하자.

아래 예시 코드에서는 맨 위에 랩타임을 추가한다.

val lapTime = this.time
val textView = TextView(this)
textView.text = "$lap LAB : ${lapTime / 100}.${lapTime%100}"

lapLayout.addView(textView, 0)
lap++

 

'📁App Developing > Kotlin 강좌' 카테고리의 다른 글

ListView  (0) 2022.09.04
레이아웃  (0) 2022.08.27
Bmi 앱 메모  (0) 2022.07.24
kotlin 기초 문법  (0) 2022.07.23
kt 파일에서 xml 파일의 요소에 접근하기  (0) 2022.07.23

댓글