Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[37일차 Android] Toast 본문

Computer/Android

[37일차 Android] Toast

Wise-99 2023. 6. 23. 17:57

 

 

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

 

📖 Toast

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

주요 메서드

메서드 설명
makeText Toast 메시지 객체를 만든다. 화면 모양, 글자 크기 및 색상 등은 기본 설정되어 있는 것을 사용
setGravity Toast 메시지가 표시될 위치를 설정
setView Toast 메시지를 통해 보여줄 View를 설정, 이를 이용해 커스터마이징이 가능
setDuration 메시지가 표시된 시간을 설정

CallBack

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

 

 

 

예제 코드

버튼 클릭 시 일반 Toast가 나타나도록 구현

button.run {
	setOnClickListener {
		// Toast 객체를 생성한다.
		val t1 = Toast.makeText(this@MainActivity,"기본 Toast", Toast.LENGTH_SHORT)

		// 메세지가 사라질 때 동작할 코드가 있다면
		// Android 11 버전 부터 가능
		if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){
			t1.addCallback(object : Toast.Callback(){
				override fun onToastShown() {
					super.onToastShown()
					textView.text = "기본 Toast 메시지가 나타났습니다"
				}

				override fun onToastHidden() {
					super.onToastHidden()
					textView.text = "기본 Toast 메시지가 사라졌습니다"
				}
			})
		}

		t1.show()
	}
}
  • Toast.makeText()
    • context, text, 유지 시간 등을 작성한다.
  • Toast의 callBack은 안드로이드 버전 11 이상부터 가능하기 때문에 if문을 사용하여 SDK 버전을 확인한다.
    • onToastShown() : Toast가 나타났을 때 실행되는 함수
    • onToastHidden() : Toast가 사라졌을 때 실행되는 함수

 

 

 

커스텀 Toast - toast.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageViewToast"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher" />

    <TextView
        android:id="@+id/textViewToast"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAlignment="center"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>

 

 

 

커스텀 Toast - button 클릭 시 나타나도록 구현

button2.run {
	setOnClickListener {
		// ViewBinding 객체를 생성한다.
		val toastBinding = ToastBinding.inflate(layoutInflater)

		toastBinding.run {
			imageViewToast.setImageResource(R.drawable.img_android)
			textViewToast.text = "Custom Toast 입니다"

			val t2 = Toast(this@MainActivity)
			// View를 설정한다.
			t2.view = toastBinding.root

			// 배경
			toastBinding.root.setBackgroundResource(
				android.R.drawable.screen_background_dark
			)
			
            // textView 글자 색상
			textViewToast.setTextColor(Color.WHITE)

			// 위치 설정
			t2.setGravity(Gravity.CENTER,0,300)

			// 시간 설정
			t2.duration = Toast.LENGTH_LONG

			t2.show()
		}
	}
}
  • 커스텀 Toast를 만들기 위해 ViewBinding 객체를 생성한다.
  • ViewBinding 객체를 통해 run{ ... } 내부에 커스텀 내용을 작성한다.

 

 

결과

일반 Toast

 

 

 

커스텀 Toast