본문 바로가기
[Public] 프로그래밍/Android

[Android] 토스트 (Toast) 알림창 활용하기

by 차출발 2010. 8. 17.
반응형


이번 시간은 토스트를 활용해 볼 것이다.

그럼 토스트가 무엇이냐 ?

먹는 토스트냐 아니다..

안드로이드 핸드폰을 사용하다 보면

사각형 모형의 작은대화상자가 잠간 떠있다

정보를 알려주고 사라지는 경우가 있다.

아래 그림을 봐라 



안드로이드 폰을 소지하고 있다면

아 저거 ~! 하는 자신을 볼 수 있다.



그런데 그냥 대화상자를 뛰우면 되지 왜 저걸 뛰워 ?

토스트는 안드로이드가 시스템 차원에서 제공하는 작은 팝업 대화상자이다.

그래서 사용자에게 임시적으로 알림을 사용할 때 유용하다

또 플로팅 형태로 화면 하단에 잠시 나타나 사라지기 때문에 확인 버튼을 안눌리는 장점을 지니고 있다.

이뿐만 아니라 토스트는 사용자의 작업을 방해하지 않는다는 가장 큰 장점을 지니고 있다.




그럼 토스트는 어떻게 만들어요?

토스트메시지는 다음과 같이 사용되어 진다.

  static Toast makeText(Context context, int resld, int duration)
  static Toast makeText(Context context, charSequence text, int duration)



첫번째 Context 인자는 주로 액티비티를 전달하여 주로 this로 많이 사용된다.
( 만약 Activity 이름이 main 이었다면 main.this 이런식으로 사용된다.)

두번째 인자는 메시지이다.
리터럴로 지정될 수 있고, 리소스에 문자열을 정해 놓고 ID를 지정 할 수 있게 오버로드 되어 있다.

마지막 인자인 duration 이는 메시지 표시 시간을 지정한다.
보통 LENGTH_SHORT (0)  이렇게 두 가지로 사용된다.
       LENGTH_LONG   (1)


int 인자 이니 크면 더 시간이 길게 설정되나 ?

궁금해서 해보니 10으로 해도 LONG 과 차이를 못 느겼다.

int 인자값을 가지지만 실질 사용하는것은 boolean으로 사용되는 듯 싶다.

한번 선언하는 예를 들어 보면

Toast.makeText(main.this, "내가 토스트 (Toast) 입니다.", 10).show();

이렇게 선언한다.



위치는 못바꾸나요 ? 그리고 근데 매번 쓸때 마다 만들어줘야 하나요?

당연히 아니다.

이를 위해 내용을 변경 및 속성을 위한 함수를 안드로이드에서는 제공하고 있다.

void setGravity(int gravity, int xOffset, int yOffset) 위치 설정
void setMargin(float horizontalMargin, float verticalMargin) 여백 설정
void setText(Char Sequence s)  내용 변경
void setDuration(int duration)   지속 시간 설정
void setView(View view)  View 설정


이제 출력을 위해서는

void show() 보이기
void cancel() 숨기기


활용하여 출력한다.



그럼 토스트를 직접 만들어 보자 !

1. 프로젝트를 생성 한다.

2. 프로젝트에서 위의 속성함수가 어떻게 변경되는지 알기 위해 버튼 5개를 만들어 준다.



3. 버튼을 각각 클릭 이벤트를 활성화 해준다. (귀찮아서 1개로 만들고 switch 문 돌렷음 )



4. 각각 속성을 활용하는 함수를 적용해본다.




그럼 결과는 ?




결과를 시행보면 각각 속성별로 바뀌는 것을 알 수 있다.

근데 여기서 주의 할게 여백설정에 있어

Margine 의 개념을 잘 알고 갔으면 한다.

Margine 이란 토스트 박스를 주변 전체 사각형의 여백이다.

이 여백을 설정해주기 때문에 박스의 크기가 변하는게 아닌가 하는 생각을 가지지는 말았으면 한다.

단지 박스의 위치가 바뀔 뿐이다....



도움이 되셨다면 리플하나 남겨주세요 ^^

큰 도움이 된답니다 *^^*