본문 바로가기
안드로이드/메세징

안드로이드 Toast

by 김어찐 2022. 6. 9.
728x90
안드로이드에서 간단하게 메시지를 표시할 때 사용한다.
화면과 관련 없이 안드로이드 OS에게 메시지 출력을 요청하고  안드로이드 OS에 의해 나타나는 메시지이다.
단말기내의 모든 애플리케이션, 모든 구성요소가 요청할 수 있으며 애플리케이션에 관계없이 요청된 순서대로 메시지가 나타난다.

 

주요 메서드, 프로퍼티

makeText : Toast 메시지 객체를 만든다. 화면 모양, 글자 크기 및 색상 등은 기본 설정되어 있는 것을 사용한다.
setGravity : Toast 메시지가 표시될 위치를 설정한다.
view : Toast 메시지를 통해 보여줄 View를 설정한다. 이를 이용해 커스터마이징이 가능하다. view 프로퍼티를 이용해 Toast를 커스터 마이징 하는 것은 안드로이드 11(API 30) 부터 Deprecated 되었다. 이 후에는 SnackBar를 사용하는 것을 추천한다.
Duration : 메시지가 표시된 시간을 설정한다.

 

callback

안드로이드 11 (API 30) 부터 Toast 에 Callback을 설정할 수 있다.
onToastHidden : Toast 메시지가 사라질 때 호출된다.
onToastShown : Toast 메시지가 나타날 때 호출된다.

 

package com.example.toast

import android.os.Build
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.view.*


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

        // custom toast 작성
        button.setOnClickListener {
            // Toast 객체 생성한다.
            val t1 = Toast.makeText(this,"기본 Toast 입니다", Toast.LENGTH_LONG)

            // callback 객체 생성
            // 하위버전에서는 실행 안함
            textView.text = "${Build.VERSION.SDK_INT}"
            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()
        }

        button2.setOnClickListener {
            // Toast에 보여줄 View를 생성
            val toastView = layoutInflater.inflate(R.layout.custom_toast, null)

            toastView.run {
                toast_Image.setImageResource(R.drawable.img_android)
                toast_text.text = "Custom Toast 입니다."
            }
            toastView.setBackgroundResource(android.R.drawable.toast_frame)

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

            t2.setGravity(Gravity.CENTER,100,100)

            t2.duration = Toast.LENGTH_LONG

            t2.show()
        }
    }
}

 

 

Custom Toast xml 파일

728x90

'안드로이드 > 메세징' 카테고리의 다른 글

안드로이드 Notification  (0) 2022.06.13
안드로이드 항목 선택 Dialog  (0) 2022.06.13
안드로이드 ListDialog  (0) 2022.06.13
안드로이드 Dialog  (0) 2022.06.13
안드로이드 SnackBar  (0) 2022.06.13