토스트 메세지란(Toast Message)?
토스트 메세지란 짧은 메세지를 유저에게 노출 시킨 후 일정 시간이 지나면 사라지는 팝업이다. 우리가 앱에서 흔히 볼수 있는 뒤로가기를 눌렀을때 "뒤로가기를 한 번 더 누르면 앱이 종료됩니다."라고 뜨는 팝업이 토스트 메세지 이다.
기본적인 코드는 다음과 같다.
val myToast = Toast.makeText(applicationContext, "Hello, World!", Toast.LENGTH_SHORT)
myToast.show()
여기서 첫번째 인자는 컨텍스트, 두번째는 노출할 메세지, 세번째 인자는 Toast.LENGTH_SHORT는 Duration, 즉 노출 시간을 전달한다. 노출 시간은 Toast내에 static하게 LENGTH_SHORT와 LENGTH_LONG으로 정의 되어있다. 해당 시간의 길이는 각각 4초(4000ms)와 7초(7000ms) 가량이다.
예제
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<Button>(R.id.button).setOnClickListener {
showToastMessage()
}
}
private fun showToastMessage() {
val myToast = Toast.makeText(applicationContext, "Hello, World!", Toast.LENGTH_SHORT)
myToast.show()
}
}
단순히 버튼을 클릭했을 때 토스트를 띄우는 코드이다. 레이아웃에 버튼 하나이므로 xml 코드는 첨부하지 않는다.
결과
커스텀 토스트 메세지
다음으로 유저가 커스텀으로 토스트 메세지를 만드는 방법에 대해 알아보자. 이 예제를 통해 우리는 기본적인 UI 가 아니라 배경이나 글자색이 변경된, 나만의 토스트 메세지를 만들어 볼 수 있다.
예제
layout_toast.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/text_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#9c9c9c"
android:layout_gravity="center"
android:paddingHorizontal="20dp"
android:paddingVertical="10dp"
android:textColor="#3c3c3c"
tools:text="커스텀 토스트 메세지가 들어갈 자리입니다." />
실제로 출력될 토스트 메세지 디자인이다. 텍스트 뷰의 background나 padding, textColor, textSize 등을 원하는대로 바꿔보자
CustomToast.kt
class CustomToast(context: Context, message: String) : Toast(context) {
init {
val view = LayoutInflater.from(context).inflate(R.layout.layout_toast, null)
view.findViewById<TextView>(R.id.text_toast).apply {
text = message
}
setView(view)
duration = Toast.LENGTH_SHORT
}
}
Toast를 상속 받는 CustomToast 클래스이다. 메세지를 인자로 받아 findViewById로 TextView와 연결시켜 준다.
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<Button>(R.id.button).setOnClickListener {
showToastMessage()
}
}
private fun showToastMessage() {
CustomToast(applicationContext, "Hello, World!").show()
}
}
클릭 시 토스트 메세지가 노출되도록한다. CustomToast는 Toast를 상속받았으므로 단순히 인자를 넘겨 인스턴스를 생성한 후 show() 메서드를 호출하면 된다.
결과
토스트 메세지 참고 자료:
https://developer.android.com/guide/topics/ui/notifiers/toasts
'개발' 카테고리의 다른 글
안드로이드 커스텀 폰트 적용 방법 (0) | 2020.06.18 |
---|---|
안드로이드 흐르는 텍스트처리 - 띠 배너(Ticker) 만들기 (0) | 2020.06.17 |
안드로이드 TextView 글자수 초과 시 말 줄임표 처리 (0) | 2020.06.16 |
안드로이드 Bottom Sheet Dialog 만들기 (1) | 2020.06.15 |
안드로이드 커스텀 다이얼로그 만들기 (0) | 2020.06.14 |
댓글