안드로이드에서 Popup을 통해 유저에게 특정 메시지를 notify하는 방법은 두 가지가 있다.

바로 Toast와 AlertDialog 객체를 사용하는 방법인데, 이 두 객체의 가장 큰 차이는 다음과 같다.

  • Toast: 일정 시간 후 자동으로 없어짐. 기존 작업의 포커스 절대 뺏지 않음. (즉 기존 작업하던 것에 전혀 영향을 주지 않음)
  • AlertDialog: 사용자 입력(ex. ok/close등의 버튼 클릭)이 있어야 없어짐. 기존 작업으로부터 포커스 뺏음.


    이중 Toast부터 자세히 알아 보자.

 

1. Toast

토스트는 사용자에게 간단한 메시지를 전하는 view이며,

안드로이드 SDK의 Toast클래스는 토스트를 생성하고 화면에 표현하는 것을 도와준다.


토스트 객체의 자동소멸 특성상 사용자가 화면을 보고 있지 않다면

사용자에게 메시지를 알리는데 실패할 수도 있음을 염두 할 필요가 있다.


토스트가 쓰이는 간단한 예로는 볼륨컨트롤, 설정변경저장 알림, 크리티컬하지 않은 전원경고 등이 있다.

 

다음은 Toast 클래스의 상속 관계이다.

 

 

Toast 생성하기 1: makeText이용

일반적인 text만을 표시하는 Toast 객체를 생성할 때 가장 쉬운 방법은 다음과 같은 static 메소드를 사용하는 것이다.


static Toast makeText(Context context, int resId, int duration)


Context context는 사용할 context를 전달. (반적으로 실행되고 있는 App/Activity의 context)

int resId는 String 리소스(formatted String 리소스 지정 가능)를 지정해 주면 된다.

int duration은 토스트가 화면에 표시될 시간을 지정하며, Toast클래스에 LENGTH_LONG, LENGTH_SHORT 상수 중 하나를 설정하면 된다. (기억으론 LENGTH_SHORT가 약 3초정도 이고 LENGTH_LONG은 그보다 조금 길었던 것 같다)


 


일반적인 Text 형태(크기, 색상 등을 꾸미지 않은)로 Toast 메시지를 표시해도 된다면,

다음과 같이 더 간단한 static method를 사용할 수도 있다.


static Toast makeText(Context context, CharSequence text, int duration)


CharSequence text에 전달할 인자로 ""에 둘러싸인 문자열을 지정하면 된다

 


위의 makeText() 메소드들은 전달된 인자를 바탕으로 Toast객체를 생성해 리턴하며,

리턴된 객체에 .show() 메소드를 호출하여 화면에 토스트를 표현한다.

 


 

Toast 생성하기 2: 일반적인 생성 방법

Text보다 좀더 복잡한 view를 토스트에 표현 하고 싶다면 다음과 같은 방법을 사용한다.

  • new 키워드를 사용해 새 Toast인스턴스 생성
  • Toast인스턴스에서 표현할 view 생성
  • setView(view) 메소드를 이용해 Toast인스턴스의 view를 설정
  • setDuration() 메소드를 이용해 토스트 지속 시간을 설정
  • show() 메소드를 이용해 토스트 표시

 


 

다음 예제는 위에 언급한 2가지 토스트 생성방법을 사용하는 일반 text로 구성된 토스트와 icon+text로 구성된 토스트를 나타내는 2개의 버튼으로 이루어진 예제이다.

Toast 예제 (main.xml)

소스 펼치기

 

 

Toast 예제 (MyToast.java)

소스 펼치기

 

 


다음은 실행 화면이다.

 

 

다음은 또 다른 Popup 알림 기능을 하는 AlertDialog 객체에 대해 정리하겠습니다.

 

 

 

 

 

저작자 표시 비영리 변경 금지
신고
Posted by 무한만족 i티거