앱이 동작되는 동안에 바뀌는 속성이나, 클릭 등의 이벤트를 처리하는 부분은 코틀린 코드로 작성한다.
view id 는 camel 표기법을 지향한다. 첫소문자 그다음 단어 대문자 nameButton
onCreate 함수에서 레이아웃을 설정한 이후에는 setContentView(R.layout.activity_main)
우리가 layout안에 있는 모든 view의 id를 그대로 view의 인스턴스 변수로 참조가 가능하다.
이는 android extension 패키지에서 지원하는 기능을 이용하는 것이다. -> id.속성 이나 id.함수() 를 사용할수 있다.
옵저버 패턴 : 이벤트가 일어나는 것을 감시하는 감시자의 역할을 만든다고 하여 옵저버라고 한다.
키입력, 터치 발생, 데이터 수신등
함수로 직접 요청하지 않앗지만, 시스템 또는 루틴에 의해서 발생하게 되는 동작들을 이벤트라고 부르며
이 이벤트가 발생할때 마다 즉각적으로 처리 할수 있도록 만드는 프로그래밍 패턴을 옵저버 패턴이라고 부른다.
옵저버 패턴 예...
fun main(){
EventPrinter().start()
println()
EventPrinter2().start()
}
interface EventListener{
fun onEvent(count : Int)
}
class Counter(var listener : EventListener){
fun count(){
for(i in 1..100){
if(i%5 == 0) listener.onEvent(i)
}
}
}
class EventPrinter: EventListener{
override fun onEvent(count: Int){
print("${count}-")
}
fun start(){
val counter = Counter(this)
counter.count()
}
}
class EventPrinter2 {
fun start(){
val counter = Counter(object : EventListener{
override fun onEvent(count : Int){
print("${count}-")
}
})
counter.count()
}
}
버튼 리스너 사용법
package com.example.exam2
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
inputButton.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
if(nameEdit.text.isBlank()) {
greetText.text = "이름이 없습니다."
}else{
greetText.text = "${nameEdit.text}님 반갑습니다."
}
}
})
}
}
'안드로이드' 카테고리의 다른 글
checkbox 와 radiobutton (0) | 2020.04.01 |
---|---|
image view (0) | 2020.04.01 |
layout (0) | 2020.03.31 |
view (0) | 2020.03.31 |
Activity (0) | 2020.03.31 |
댓글