반응형
Android Message
- 안드로이드는 사용자에게 메세지를 전달할 수 있는 다양한 방법 제공
- Toast : 일정 시간이 지나면 자동으로 사라짐 => 현재는 유사한 snackbar 와 함께 사용
- Dialog : Activity 위에 나타남
- Notification : 알림창에 표시
- 메시지의 일부는 Activity, Service (Notification)와 관련
Toast
- 간단하게 메세지 표시
- 현재 실행되고 있는 화면과 관련 X -> os에게 메세지 출력 요청해 나타남
- 단말기 내의 모든 앱, 구성요소가 요청 가능
- 요청 순서대로 메세지 나타남
주요 메서드, 프로퍼티
- makeText : Toast 메시지 객체 생성, 화면 모양/글자크기/색상 등은 기본 설정된 것 사용 *meterial 로 수정 가능한지 확인
- setGravity : Toast 메세지 표시될 위치 설정
- view : 보여줄 View를 설정할 수 있어 Toast 메세지를 커스터마이징 => 안드11부터 deprecated 되어서 SnackBar 사용 추천
- Duration : 메세지가 표시되는 시간을 설정
binding.button.setOnClickListener {
// Toast 객체 생성
val t1 = Toast.makeText(this, "기본 토스트 입니다", Toast.LENGTH_SHORT) //context, message, time
t1.show()
}
binding.button2.setOnClickListener {
// Toast에 보여줄 view 생성
var toast_binding: CustomToastBinding = CustomToastBinding.inflate(layoutInflater)
//val toastView = LayoutInflater.inflate(R.)
// 이미지나 문자 셋팅
toast_binding.root.run {
toast_binding.toastImg.setImageResource(R.drawable.custom_img)
toast_binding.toastText.text = "Custom Toast"
}
// 백그라운드 지정
toast_binding.root.setBackgroundResource(android.R.drawable.toast_frame) // 안드 os 에서 제공하는 토스틑 백그라운드 이미지
// Toast 객체를 생성
val t2 = Toast(this)
t2.view = toast_binding.root
// Toast 메세지 위치 변경
t2.setGravity(Gravity.CENTER, 0, 100) //양수:아래
// Toast 메세지 유지되는 시간 변경
t2.duration = Toast.LENGTH_LONG
t2.show()
}
CallBack
- 안드 11(API 30)부터 Toast에 Callback 설정 가능 -> os 버전에 따라 코드 분기 필요
- onToastHidden : Toast 메시지가 사라질 때 호출
- onToastShown : Toast 메시지가 나타날 때 호출
binding.button.setOnClickListener {
// Toast 객체 생성
val t1 = Toast.makeText(this, "기본 토스트 입니다", Toast.LENGTH_SHORT) //context, message, time
// callback 객체 생성
//val callback = @RequiresApi(Build.VERSION_CODES.R) //os 버전 안 맞으면 null 값 들어감
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { //os 버전 11 이상
val callback = object : Toast.Callback() { //CallBack 은 추상클래스 -> 익명 중첩클래스로 만들기
override fun onToastHidden() {
super.onToastHidden()
binding.textView.text = "Toast 메세지 사라짐"
}
override fun onToastShown() {
super.onToastShown()
binding.textView.text = "Toast 메세지 나타남"
}
}
t1.addCallback(callback)
}
t1.show()
}
💡 CallBack 이란?
반응형
'Android' 카테고리의 다른 글
[안드로이드/메시징] Dialog (0) | 2023.04.10 |
---|---|
[안드로이드/메시징] SnackBar (0) | 2023.04.04 |
[안드로이드/Activity] Activity Action (0) | 2023.03.31 |
[안드로이드/Build Error] Appcompat 버전 문제 (0) | 2023.03.25 |
[안드로이드/Activity] 다른 애플리케이션의 액티비티 실행 (0) | 2023.03.25 |