2024. 1. 31. 00:02ㆍ수업 복습!
오늘은 contextMenu와 pop up menu , 그러고 ToastMessage, snackBar, DiaLog, notification에 대해 복습해보겠습니다!
● Menu
1, ContextMenu
: 화면에 배치된 View에 설정할 수 있는 메뉴입니다
메뉴가 설정된 View를 길게 누르면 메뉴가 나타나게 됩니다!!!
그러나 View를 길게 눌러야 하는 것을 알려주어야 하기 때문에 직관적이지 못합니다
그래서 강사님께선 요즘 ContextMenu는 자주 사용하지 않는 추세라고 말씀해주셨습니다.
2, PopupMenu
: Popup Menu는 개발자가 코드를 통해 원하는 View에 띄울 수 있는 메뉴입니다.
//버튼을 눌렀을 때 띄운다
button.setOnClickListener {
//팝업 메뉴 생성
//두 번째 매개변수: 메뉴를 띄울 View를 지정한다.
var popupMenu = PopupMenu(this@MainActivity, textView)
//메뉴를 구성한다
menuInflater.inflate(R.menu.popup_menu, popupMenu.menu)
//메뉴의 항목을 눌렀을때 동작할 리스너를 지정
popupMenu.setOnMenuItemClickListener {
//메뉴 항목의 id로 분기한다
when(it.itemId){
R.id.popup_menu_item1 -> textView.text = "팝업 메뉴 1을 선택했습니다."
R.id.popup_menu_item2 -> textView.text = "팝업 메뉴 2를 선택하였습니다."
}
true
}
//메뉴를 보여준다
popupMenu.show()
}
코드는 이런 식으로 작성합니다!
● 메시지
1, Toast
: 일정 시간이 지나면 자동으로 사라지는 메시지입니다!
- 안드로이드에서 간단하게 메시지를 표시할 때 사용합니다.
- 화면과 관련 없이 안드로이드 OS에게 메시지 출력을 요청하고 안드로이드 OS에 의해 나타나는 메시지입니다.
- 단말기 내의 모든 애플리케이션, 모든 구성 요소가 요청할 수 있으며
- 애플리케이션에 관계없이 요청된 순서대로 메시지가 나타납니다.
- 하지만 요즘에는 Toast보단 SnackBar를 많이 사용한다고 말씀하셨습니다.
activityMainBinding.apply {
buttonToast.setOnClickListener {
// Toast 객체를 생성한다.
// 두 번째 : 메시지
// 세 번째 : 표시할 시간
var t1 = Toast.makeText(this@MainActivity, "토스트 메시지 입니다", Toast.LENGTH_SHORT)
//메시지를 보여준다
t1.show()
}
}
코드는 이렇게 작성했습니다!
2, SnackBar
: Toast와 비슷하며 Activity 위에 표시되며 하단에 나타나는 메시지입니다.
주로 어플 화면이 떠있을 경우 사용하며.
Toast와 다르게 지속적으로 띄 수 있으며 Action을 주어 이벤트를 설정할 수 있습니다.
(자세한 코드는 Notion에 따로 정리를 해두었습니다!)
buttonSnackBar.setOnClickListener {
// 마지막 매개변수 : 메시지가 보여질 시간
// LENGTH_SHORT : 적당히 짧은 시간
// LENGTH_LONG : 적당히 긴 시간
// LENGTH_INDEFINITE : 개발자가 코드로 없애거나 다른 스낵바 메시지가 뜰 때까지 보여준다.
// 보통 Action을 줄 경우 사용한다.
var snackBar = Snackbar.make(it, "삭제되었습니다", Snackbar.LENGTH_SHORT)
//스낵바를 보여준다
snackBar.show()
}
위처럼 코드를 작성했습니다!
3, DiaLog
: 개발자가 필요할 때 사용자에게 메시지를 전달하는 용도로 사용하며
Dialog가 나타나 있을 때는 주변의 View를 사용할 수 없습니다.
주로 메시지 전달이나 입력 등의 용도로 사용합니다!
3 - 1 : Basic DiaLog
buttonBasicDialog.setOnClickListener {
var builder = MaterialAlertDialogBuilder(this@MainActivity).apply {
//타이틀
setTitle("기본 다이얼로그")
//메시지
setMessage("기본 다이얼로그 입니다.")
//중립버튼
setNeutralButton("Neutral"){ dialogInterface: DialogInterface, i: Int ->
textView.text = "기본 다이어로그 : Neutral"
}
//긍정 버튼
setPositiveButton("Neutral"){ dialogInterface: DialogInterface, i: Int ->
textView.text = "기본 다이어로그 : Positive"
}
// 부정 버튼
setNegativeButton("Negative"){ dialogInterface: DialogInterface, i: Int ->
textView.text = "기본 다이얼로그 : Negative"
}
}
//띄운다
builder.show()
}
기본적으로 확인과 취소 버튼이 있는 DiaLog는 이렇게 작성했습니다..!
3 - 2 커스텀 DiaLog
//커스텀 다이아로그
buttonCustonDialog.setOnClickListener {
var builder = MaterialAlertDialogBuilder(this@MainActivity).apply {
setTitle("커스텀 Dialog")
//View를 설정한다
var custonDialogBinding = CustomDialogBinding.inflate(layoutInflater)
setView(custonDialogBinding.root)
}
builder.show()
}
위의 코드처럼 작성을 하면 PlainText등을 사용하실 수 있습니다!
( 물론 xml파일을 하나 만들어 주어야 됩니다! ㅎㅎ )
4, Notification
- Chnnel별로 나누어 관리하는 것!
- Notification은 애플리케이션과 별도로 관리되는 메시지 이다.
- Notification 메시지를 OS에게 요청하면 OS는 알림 창 영역에 알림 메시지를 표시한다.
- 화면을 가지지 않는 실행 단위에서 메시지를 표시할 때 주로 사용한다
4 -1, Notification Channel?
- 안드로이드 8.0 부터 새롭게 추가된 기능
- 이전에는 사용자가 설정에서 알림 메시지를 비활성화 하면 모든 메시지가 비활성화 되었다.
- 8.0 부터는 Notification Channel을 이용하여 알림 메시지를 채널이라는 그룹으로 묶어 관리할 수 있으며 사용하는 채널 별로 메시지 활성화 여부를 설정할 수 있다.
notification은 아직 많이 부족합니다.. 강사님께서도 다음에 notification을 활용해야 한다면
오늘 작성한 코드를 참고해서 사용하라고 하셨을 정도로 정리가 잘 되어있지 않습니다ㅠㅠ
느낀점: 오늘은 전반적으로 이해가 잘 되었었는데 마지막에 배운 notification이 정말 충격적이었습니다
어플이라는 것이 당연히 알람을 필요로 하는데 솔직히 알람을 넣는 걸 포기해야하나? 할 정도로
어렵게 느껴졌습니다.. 그래서 앞으로 다양한 개인 프로젝트를 진행하면서 notification을 자주 활용하는
습관을 들여야 할 것 같습니다!
'수업 복습!' 카테고리의 다른 글
안드로이드 수업을 마치며 2탄! (0) | 2024.02.26 |
---|---|
안드로이드 수업을 마치며,,, (2) | 2024.02.24 |
왕초보 안드로이드 개발 10탄( 복습, parcelable, toolBar) (0) | 2024.01.30 |
왕초보 안드로이드 개발 9탄(Actitvity-2) (0) | 2024.01.28 |
왕초보 안드로이드 개발 8탄(Activity) (0) | 2024.01.28 |