[안드로이드 스튜디오]버튼, 클릭 이벤트 기본 사용법 – 클릭 이벤트[Button][1]

안드로이드 스튜디오 버튼 클릭 이벤트 기본 사용법
안드로이드 스튜디오 버튼 클릭 이벤트

안녕하세요. 저번 포스팅에서 다룬 텍스트 뷰(TextView)에 이어서, 오늘은 안드로이드 앱 구성의 핵심 요소인 버튼(Button)클릭 리스너(Click Listener)에 대해 알아보려고 합니다.

앱을 만들 때 사용자의 입력을 받는 가장 기본적인 방법이 바로 버튼이죠. 그럼 버튼이란 무엇인지, 그리고 어떻게 사용하는지 자세히 살펴보겠습니다.


버튼(Button)에 대하여


버튼은 텍스트 뷰와 마찬가지로 앱 UI를 구성할 때 굉장히 빈번하게 사용됩니다. 크게 텍스트를 포함하는 일반적인 Button과 이미지를 넣을 수 있는 ImageButton으로 나뉩니다.

오늘 다룰 일반 버튼은 텍스트 뷰를 부모 클래스로 상속받기 때문에, 텍스트 뷰가 가진 속성(글자 크기, 색상 등)의 대부분을 그대로 사용할 수 있다는 특징이 있습니다.

1. 버튼 사용법


버튼을 레이아웃에 추가하는 방법은 세 가지가 있습니다. 팔레트(Palette)에서 드래그 앤 드롭으로 추가하는 방법, 코틀린 코드에서 프로그래밍적으로 추가하는 방법, 그리고 XML 코드에서 직접 작성하는 방법입니다.

가장 많이 쓰이는 XML 직접 추가 방식의 예시 코드는 다음과 같습니다.

activity_main.xml

<Button
    android:id="@+id/testButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"/>

위와 같이 레이아웃 XML 파일에 코드를 추가하면 화면 중앙에 버튼이 생성됩니다. 위 예시에서는 ConstraintLayout 속성을 사용했는데, 해당 레이아웃의 상세한 특징은 다음 포스팅에서 별도로 다루도록 하겠습니다.

2. 클릭 리스너 (Click Listener)


클릭 리스너는 위젯이 클릭되었을 때 특정 동작(함수)을 실행시키는 객체입니다. 사용자와 앱이 상호작용하는 가장 대표적인 수단이죠.

자바(Java)에서는 익명 객체를 생성하여 다소 복잡하게 작성해야 했지만, 코틀린(Kotlin)은 람다식을 지원하므로 훨씬 간결하게 구현할 수 있습니다.

기존 방식 (Object 사용)

button.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View?) {
        // 실행할 코드를 여기에 작성하세요.
    }
})

추천 방식 (람다식 사용)

val button : Button = findViewById(R.id.testButton)
button.setOnClickListener {
    // 실행할 코드를 여기에 작성하세요.
}

클릭 리스너를 사용하기 위해서는 먼저 findViewById()를 이용해 버튼 객체를 불러와야 합니다. 만약 Object 방식으로 구현했을 때 노란 줄(Warning)이 뜬다면, 해당 위치에서 Alt + Enter를 눌러 람다식으로 간편하게 변환할 수 있습니다.

3. 롱 클릭 리스너 (Long Click Listener)


롱 클릭 리스너는 사용자가 버튼을 일정 시간 동안 길게 누르고 있을 때 실행됩니다. 호출 방식은 일반 클릭 리스너와 거의 동일합니다.

val button : Button = findViewById(R.id.testButton)
button.setOnLongClickListener {
    // 실행할 코드를 작성하세요.
    true // 이벤트 소비 여부를 반환해야 합니다.
}

일반 클릭 리스너와의 차이점은 마지막에 Boolean 값(true/false)을 반환해야 한다는 점입니다. true를 반환하면 롱 클릭 이벤트가 완료된 것으로 간주하여 이후 일반 클릭 이벤트가 중복 발생하지 않습니다.

4. 다른 위젯에도 리스너 부여가 가능한가?


네, 가능합니다. 텍스트 뷰(TextView)나 이미지 뷰(ImageView) 등 대부분의 뷰 위젯에 클릭 리스너를 달 수 있습니다. 하지만 사용자 경험(UX) 측면에서 특별한 이유가 없다면, 클릭을 목적으로 만들어진 Button 위젯을 사용하는 것이 가장 바람직합니다.


오늘은 안드로이드 스튜디오에서 버튼을 생성하고 클릭/롱 클릭 이벤트를 처리하는 방법을 알아보았습니다. 다음 시간에는 레이아웃 구성의 핵심인 ConstraintLayout에 대해 자세히 설명해 드리겠습니다.

이후에는 지금까지 배운 내용들을 활용해 간단한 타이머 앱을 직접 만들어보는 실습도 진행할 예정이니 많은 기대 부탁드립니다. 감사합니다!

다른 글 읽기

위로 스크롤