본문 바로가기
2022년

Toast

by 박상윤 2021. 10. 21.

Android Message

- 안드로이드는 사용자에게 메세지를 전달할 수 있는 다양한 방법을 제공한다.

- Toast: 일정 시간이 지나면 자동으로 사라지는 메세지

- Dialog: Activity위에 나타나는 메시지

- Notification : 알림창에 표시되는 메세지

- 메세지의 일부는 Activity, Service와 관련이 있다.

 

Toast

- 안드로이드에서 간단하게 메세지를 표시할 때 사용한다.

- 화면과 관련 없이 안드로이드 OS에게 메시지를 출력을 요청하고 안드로이드 OS에 의해 나타나는 메시지이다.

- 단말기내의 모든 애플리케이션, 모든 구성요소가 요청할 수 있으며 애플리케이션에 관계없이 요청된 순서대로 메시지가 나타난다.

 

주요 메서드, 주요 프로퍼티

- makeText : Toast 메세지 객체를 만든다. 화면 모양, 글자 크기 및 색상 등은 기본 설정되어 있는 것을 사용한다.

- setGravity : Toast 메시지가 표시될 위치를 설정한다.

- view : Toast 메시지를 통해 보여줄 View를 설정한다. 이를 이용해 커스터마이징이 가능하다.

view 프로퍼티를 이용해 Toast를 커스터 마이징 하는 것은 안드로이드 11(API30)부터 Deprecated되었다. 이 후에는 SnackBar를 사용하는 것을 추천한다.

- Duration : 메시지가 표시된 시간을 설정한다.

 

package com.sypark.toast

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            // 토스트 객체를 생성한다.
            val t1 = Toast.makeText(this,"뭘봐 임마!",Toast.LENGTH_SHORT)
            t1.show()
        }
    }
}

 

package com.sypark.toast

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.custom_toast.*
import kotlinx.android.synthetic.main.custom_toast.toast_image
import kotlinx.android.synthetic.main.custom_toast.view.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            // 토스트 객체를 생성한다.
            val t1 = Toast.makeText(this,"뭘봐 임마!",Toast.LENGTH_SHORT)
            t1.show()
        }

        button2.setOnClickListener {
            // 토스트에 보여줄 뷰를 생성한다
            val toastView = layoutInflater.inflate(R.layout.custom_toast,null)

            toastView.run {
                toast_image.setImageResource(R.drawable.ic_launcher_foreground)
                toast_text.text="Custom Toast입니다"
            }

            toastView.setBackgroundResource(android.R.drawable.toast_frame)

            // Toast 객체를 생성한다.
            val t2 = Toast(this,)

            // View를 설정한다.
            t2.view = toastView

            t2.setGravity(Gravity.CENTER,0,300)

            t2.duration = Toast.LENGTH_LONG

            t2.show()
        }
    }
}

 

Callback

- 안드로이드 11(API 30) 부터 Toast에 Callback을 설정할 수 있다.

- onToastHidden : Toast 메세지가 사라질 때 호출된다.

- onToastShown : Toast 메세지가 나타날 때 호출된다.

button.setOnClickListener {
            // 토스트 객체를 생성한다.
            val t1 = Toast.makeText(this,"뭘봐 임마!",Toast.LENGTH_SHORT)
            t1.show()

            // callback 객체 생성
            if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.R){
                val callback = object:Toast.Callback(){
                    override fun onToastHidden() {
                        super.onToastHidden()
                        textView.text = "Toast 메시지가 사라졌습니다"
                    }

                    override fun onToastShown() {
                        super.onToastShown()
                        textView.text = "Toast 메시지가 나타났습니다"
                    }
                }
                t1.addCallback(callback)
            }
            t1.show()
        }

기본 TOAST 버튼을 누르자 "Toast 메세지가 나타났습니다"라고 실행된다.

 

정리

- Toast는 간단한 메세지를 사용자에게 전달하는 용도로 사용한다.

'2022년' 카테고리의 다른 글

Dialog  (0) 2021.10.22
SnackBar  (0) 2021.10.22
Activity Action  (0) 2021.10.21
Intent Filter  (0) 2021.10.20
객체 전달하기  (0) 2021.10.20