오늘 하루도 출발해보겠습니다.
오늘은 드디어 강의를 끝냈습니다.
아직 궁금한 부분도 있고, 더 공부하고 싶은 부분도 있어, 과제는 내일부터 할 것 같습니다.
안드로이드 스튜디오에서는 다이얼로그라는 작은 창을 띄웠습니다.
val builder = AlertDialog.Builder(this)
builder.apply {
setIcon(R.drawable.ic_launcher_foreground)
setTitle("알럴ㄹ트")
setMessage("이건 알럴ㄹㄹ트 입니다.")
}
val listener = DialogInterface.OnClickListener { _, which ->
when(which) {
DialogInterface.BUTTON_POSITIVE ->
binding.tvTitle.text = "굿"
DialogInterface.BUTTON_NEGATIVE ->
binding.tvTitle.text = "밷"
DialogInterface.BUTTON_NEUTRAL ->
binding.tvTitle.text = "엥"
}
}
builder.setPositiveButton("좋아", listener)
builder.setNegativeButton("싫어", listener)
builder.setNeutralButton("그래", listener)
builder.show()
위와 같은 코드로 AlertDialog를 작성할 수 있습니다.
val builder = AlertDialog.Builder(this)
먼저, 빌더를 만들어줍니다.
builder.apply {
setIcon(R.drawable.ic_launcher_foreground)
setTitle("알럴ㄹ트")
setMessage("이건 알럴ㄹㄹ트 입니다.")
}
이후, 빌더에 아이콘, 제목, 메시지 설정을 해줍니다.
val listener = DialogInterface.OnClickListener { _, which ->
when(which) {
DialogInterface.BUTTON_POSITIVE ->
binding.tvTitle.text = "굿"
DialogInterface.BUTTON_NEGATIVE ->
binding.tvTitle.text = "밷"
DialogInterface.BUTTON_NEUTRAL ->
binding.tvTitle.text = "엥"
}
}
그 다음, DialogInterface의 OnClickListener 를 이용해서 각 Button에 기능을 추가해줍니다.
DialogInterface의 어떤 버튼인지는 which 변수에 따라 달라지게 됩니다.
builder.setPositiveButton("좋아", listener)
builder.setNegativeButton("싫어", listener)
builder.setNeutralButton("그래", listener)
이후 빌더에 각 버튼을 텍스트와 리스너를 같이 설정해줍니다.
builder.show()
마지막으로 빌더를 보여주게 되면 다이얼로그가 완성됩니다.
다음으로 커스텀 다이얼로그입니다.
위 AlertDialog에서 아래와 같이 뷰를 설정해주면 됩니다.
val v1 = layoutInflater.inflate(R.layout.dialog, null)
builder.setView(v1)
이렇게 쓰면, setView를 통해서 커스텀으로 만든 뷰를 설정해주면 됩니다.
그 다음은 DatePickerDialog 입니다.
이는 이전에 봤던 Dialog와 달리, Calendar 정보가 필요합니다.
val calendar = Calendar.getInstance()
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val day = calendar.get(Calendar.DAY_OF_MONTH)
val listener = DatePickerDialog.OnDateSetListener { view: DatePicker?, year: Int, month: Int, dayOfMonth: Int ->
binding.tvTitle.text = "${year}년 ${month}월 ${dayOfMonth}일"
}
val picker = DatePickerDialog(this, listener, year, month, day)
picker.show()
위와 같이 작성돼 있습니다.
val calendar = Calendar.getInstance()
먼저, 캘린더의 인스턴스를 구해옵니다.
val year = calendar.get(Calendar.YEAR)
val month = calendar.get(Calendar.MONTH)
val day = calendar.get(Calendar.DAY_OF_MONTH)
이후, 캘린더 인스턴스로부터 년, 월, 일에 대한 정보를 받아오고,
val listener = DatePickerDialog.OnDateSetListener { view: DatePicker?, year: Int, month: Int, dayOfMonth: Int ->
binding.tvTitle.text = "${year}년 ${month}월 ${dayOfMonth}일"
}
DatePickerDialog의 리스너인 DateSetListener를 설정합니다.
val picker = DatePickerDialog(this, listener, year, month, day)
picker.show()
마지막으로, DatePickerDialog를 만들고, show() 해주면 됩니다.
time picker도 비슷합니다.
val hour = calendar.get(Calendar.HOUR)
val minute = calendar.get(Calendar.MINUTE)
위와 같이 캘린더에서 시간과 분을 정보를 가져옵니다.
val listener = TimePickerDialog.OnTimeSetListener { view: TimePicker?, hourOfDay: Int, minute: Int ->
binding.tvTitle.text = "${hourOfDay}시 ${minute}분"
}
그리고, TimePickerDialog에 TimeSetListener를 설정합니다.
val picker = TimePickerDialog(this, listener, hour, minute, true)
picker.show()
그 이후, TimePickerDialog를 만들고, show() 해주면 됩니다.
코드는 위와 같았고 결론적으로는 다음과 같은 순서를 따라갑니다.
Alert와 커스텀 다이얼로그는 AlertDialog.Builder() 를 사용해 빌더를 만들고 이에 설정값을 추가합니다.
그리고, DialogInterface.OnClickListener를 사용해 버튼에 추가할 리스너를 만들어줍니다.
이를 버튼에 설정해주고, 빌더를 show() 하면 됩니다.
DatePicker와 TimePicker는 Calendar에서 인스턴스를 받아와 정보를 가져옵니다.
그 정보를 DataPickerDialog.OnDateSetListener, OnTimeSetListener 에 연결해줍니다.
이후, 이 Listener와 Calendar에서 가져온 정보들을 가지고 DatePickerDialog, TimePickerDialog에 연결하고, show() 하면 됩니다.
내일부턴 과제를 시작하겠습니다.
벌써 금요일이네요.
끝.
P. S. 내배캠은 탈것을 뿌려라 !