Android (안드로이드)

[Android] 토스트 메시지 / 커스텀 토스트 / Toast

Oscar:) 2022. 9. 2. 15:42

 

이번 포스팅에서는 안드로이드 토스트 메시지에 대해 알아보겠다.

 

 

 

토스트 (Toast)

 

토스트 메시지는 일종의 알림이라고 생각하면 쉽다.

 

 

공식 문서에서는 다음과 같이 설명한다.

토스트 메시지는 작업에 관한 간단한 피드백을 작은 팝업 형태로 제공한다.
진행 중인 활동과 상호 작용은 그대로 유지된 채, 메시지에 필요한 공간만 차지한다.

 

앱이 Android 12(API 수준 31) 이상을 타겟팅 한다면,

토스트 텍스트는 두 줄로 제한되고 텍스트 옆에 애플리케이션 아이콘이 표시된다.

 


 

토스트 사용법

 

토스트 메시지의 사용 문법은 다음과 같다.

Toast.makeText(context,text,duration).show();

 

Toast 클래스의 makeText(context, text, duration) 메서드와 show() 메서드를 사용한다.

 

 

makeText() 메서드에 들어가는 매개변수는 다음과 같다.

 

1. context

프로세스의 현재 context 정보를 작성해준다.

getApplicationContext() 또는 액티비티.this 등을 사용할 것이다.

 

 

2. text

사용자에게 표시될 텍스트를 작성해준다.

String 에 담긴 값이나 String 리소스 또는 하드코딩도 괜찮다.

 

 

3. duration

사용자에게 표시될 지속 시간이며

다음 두가지 중 하나를 선택해 사용한다.

 

· LENGTH_SHORT : 비교적 짧게, 약 3초 지속된다.

· LENGTH_LONG : 비교적 길게, 약 5초 지속된다.

 


 

토스트 사용 예제

 

이제 토스트 메시지를 직접 사용해보자.

 

간단히 버튼만 하나 만들어서 테스트할 것이니,

레이아웃 코드는 생략하겠다.

 

ToastTestActivity.java

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Toast.makeText(getApplicationContext(),"이것은 토스트 메시지 입니다",Toast.LENGTH_SHORT).show();

            }
        });

 

 

결과는 다음과 같다.

 

빨간 체크 표시가 된 부분이 토스트 메시지다.

버튼을 클릭하니, 정상적으로 표시된 것을 확인할 수 있었다.

 


 

토스트 객체를 활용한 커스텀 토스트

 

일반적인 토스트 메시지는 딱딱해 보이기 마련이다.

그래서 우리는, 토스트 메시지를 커스텀 할 수 있다.

 

레이아웃 파일을 생성하고, TextView 를 하나 추가해주자.

 

toast_custom.xml

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="커스텀 토스트 메시지"
        android:textSize="20dp"
        android:textColor="@color/white"
        android:background="#dd0000"
        android:padding="10dp"
        />

 

테스트인 만큼, 눈에 잘 띄도록 빨간색 배경을 입혀주고,

간단하게 텍스트 크기와 패딩 값을 지정해 주었다.

 

 

유심히 봐야될 부분은 java 코드이다.

 

ToastTestActivity.java

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            
                // 1
                Toast toast = Toast.makeText(getApplicationContext(),"",Toast.LENGTH_SHORT);
                
                // 2
                View toastLayout = getLayoutInflater().inflate(R.layout.toast_custom,null);
                
                // 3
                toast.setView(toastLayout);
                toast.show();

            }
        });

 

makeText() 메서드로 Toast 객체를 초기화 시켜준다.

레이아웃 파일을 따로 사용할 것이므로, text 인수는 빈 값으로 작성한다. ("")

 

View 객체에, 위에서 생성한 레이아웃 파일을 inflate 해준다.

 

inflate 는 '부풀리다' 라는 의미를 가지고 있지만,

실체화 해준다고 생각하면 쉽다.

 

xml 파일을 객체화 할 때 주로 사용한다.

 

View 객체를 매개변수로 하는 setView() 메서드를 작성해주고,

일반적인 토스트 메시지 출력과 같이 show() 해준다.

 

 

결과는 다음과 같다.

 

마찬가지로, 빨간 체크 표시된 부분이 토스트 메시지다.

xml 파일에서 커스텀 한 그대로 표시된 것을 확인할 수 있다.

 


 

토스트 위치 변경

 

토스트 메시지의 표시될 위치 또한 커스텀 할 수 있다.

 

setGravity() 메서드를 사용하면 된다.

 

 

· 앱의 정가운데 표시

toast.setGravity(Gravity.CENTER, 0, 0);

 

첫 번째 인수는 전체적인 위치를 잡아주고,

두 번째 인수는 x축 값을,

세 번째 인수는 y축 값을 추가로 적용해준다.

 

 

· 테스트를 위한 커스텀

toast.setGravity(Gravity.TOP|Gravity.LEFT,50,200);

 

위 코드의 결과는 다음과 같다.

 

좌측 상단의 기본 값을 가진 상태에서

x축 + 50 / y축  +200 만큼 적용된 위치에 표시되었다.

 

 


 

이번 포스팅에서는 안드로이드의 토스트 기능에 대해 알아보았다.

 

개인적인 생각으로는 토스트 기능 자체는 매우 훌륭하지만,

일반적으로 사용하기에는 올드하고 딱딱한 느낌을 준다고 생각한다.

 

그렇기에 실제로 앱에서 사용한다면,

앱의 분위기에 맞춰서 커스텀하여 사용하는 것을 추천한다.