안드로이드 버튼 기본 사용법. (Android Button)

2016. 2. 25. 13:14


1. 안드로이드 Button

Button은 사용자가 화면을 터치했을 때 발생하는 클릭 이벤트를 처리하는 기능을 가진, 텍스트 또는 아이콘(또는 텍스트와 아이콘 모두)으로 구성된 View 위젯입니다. TextView와 마찬가지로 안드로이드 UI를 구성할 때 가장 많이 사용되는 위젯 중 하나입니다.


Button은 기본적으로 사용자의 터치 이벤트를 처리할 수 있기 때문에 TextView와는 다른 목적으로 사용되지만, 거의 모든 기능을 TextView로부터 상속하고 있습니다.
즉, Button 클래스의 부모 클래스는 TextView이며, TextView에서 정의된 대부분의 속성이나 기능들을 Button에서 그대로 사용할 수 있습니다.



사용자 터치 이벤트를 처리하기 위해 Button을 사용하지만, TextView에서도 Button과 동일한 방법으로 사용자 터치 이벤트를 처리할 수 있습니다. 하지만 앱에서의 "사용 용도" 관점에서는 확연히 구분지어 용도에 맞게 사용하시기 바랍니다.

2. Button 기본 사용법.

Button을 사용하는 방법은 TextView만큼이나 간단합니다. 물론 Button이 클릭되었을 때 발생하는 이벤트 처리 작업이 추가되어야 하지만, 예제를 보면 쉽게 만들 수 있습니다.

2.1 Activity Layout 리소스 XML에 Button 추가

Activity에 Button을 사용하기 위한 첫 번재 단계는 Activity의 Layout 리소스 XML에 Button을 추가하는 것입니다.

[STEP-1] "activity_main.xml" - MainActivity에 Button 추가.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.recipes4dev.examples.buttonexample1.MainActivity"
    tools:showIn="@layout/activity_main">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:text="Button Example" />

</RelativeLayout>

2.2 Java 코드에서 Button에 대한 참조 획득

Activity의 Layout 리소스 XML에 Button을 추가할 때 지정한 "id" 속성 값을 사용하여 Button에 대한 참조를 획득할 수 있습니다. 이렇게 획득한 참조를 가지고 Button의 속성을 변경하거나, 기능을 수행하기 위한 함수를 호출할 수 있습니다.

[STEP-2] "MainActivity.java" - onCreate()에서 Button에 대한 참조 획득.
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ... 코드 계속

        Button button1 = (Button) findViewById(R.id.button1) ;

        // 코드 계속 ...
    }
}

2.3 Button 클릭에 대한 이벤트 처리

안드로이드에서는 위젯에서 발생한 특정 이벤트를 처리하기 위해 리스너(Listener)라는 것을 사용합니다. 리스너(Listener)의 사전적 의미는 "듣는 사람" 또는 "청취자" 입니다. 어떤 말이 나오는지 귀기울이는 사람을 지칭하는 단어죠. 안드로이드에서도 비슷한 개념으로 사용됩니다. 즉, 어떤 이벤트의 발생 여부에 귀기울이는 객체를 리스너라고 하는 거죠.


Button 에서 발생할 수 있는 클릭 이벤트는 부모 클래스인 View 클래스에 이미 정의되어 있습니다. 또한 클릭 이벤트를 위한 리스너도 Java 인터페이스의 형태로 정의되어 있으며, 이벤트 발생 시 호출될 함수의 형식(이름, 파라미터, 리턴 값)도 인터페이스 내에 정의되어 있습니다. 더 나아가 어떤 리스너 객체가 Button의 클릭 이벤트를 처리할 것인지 지정하는 함수까지 만들어져 있습니다.


대부분의 UI 이벤트 처리 코드는 View 클래스에 아래와 같이 정의되어 있습니다.



이벤트를 처리하기 위해 남은 일은, 즉, 개발자가 해야 할 유일한 작업은 "이벤트 발생 시 호출될 함수를 구현한 리스너 객체를 생성하여 Button에 지정" 하는 것 뿐입니다.


해야 할 작업을 좀 더 구체적으로 적어보자면 클릭 이벤트 발생 시 호출될 onClick함수를 구현한 OnClickListener 객체를 new 로 생성한 다음, setOnClickListener()함수를 호출하여 Button에 지정하는 것입니다. 아래 코드를 참고하세요.

[STEP-3] "MainActivity.java" - Button에 대한 클릭 이벤트 처리.
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        // ... [STEP-2] 이후 코드 계속

        button1.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View view) {
                // TODO : click event
            }
        });
    }


3. Button 예제 실행 화면

너무 간단한 예제 소스라서 별로 하는 기능이 없습니다. Button만 화면에 덩그러니 표시되어 있네요. 하지만 실망하지 마세요. Button의 onClick() 함수는 앞으로 점점 더 복잡해질테니까요.



4. 참고

.END.


ANDROID 프로그래밍/BUTTON