Deperecated/Android_강의

안드로이드 - 다이얼로그

누알라리 2020. 2. 13. 22:58
1. 다이얼로그란?

- 개발자가 필요할 때 사용자에게 메세지를 전달하는 용도로 사용

- 다이얼로그가 나타나 있을 때는 주변의 뷰를 누를 수 없다.

- 메세지 전달이나 입력 등의 용도로 사용된다.

2. 기본 다이얼로그

- 총 3개의 버튼을 배치할 수 있다.

- 아이콘, 제목, 본문내용, 최대 버튼 3개

 

        // 1. 버튼을 누르면 기본 다이얼로그가 뜨게
        button4.setOnClickListener { view ->
            var builder = AlertDialog.Builder(this)

            // 아이콘
            builder.setIcon(R.drawable.images)
            // 제목
            builder.setTitle("기본 다이얼로그")
            // 본문 내용
            builder.setMessage("본문 입니다")


            //버튼을 눌렀을 때 이벤트를 발생시키기 위해서는 리스너를 붙여야한다.
            var listner = object : DialogInterface.OnClickListener{
                override fun onClick(dialog: DialogInterface?, which: Int) {
                    when(which)
                    {
                        BUTTON_POSITIVE ->
                            textView.text = "포지티브"
                        BUTTON_NEGATIVE ->
                            textView.text = "네거티브"
                        BUTTON_NEUTRAL ->
                            textView.text = "뉴트럴"
                    }
                }
            }

            // 버튼 표기
            builder.setPositiveButton("Positive", listner)
            builder.setNeutralButton("Neutral", listner)
            builder.setNegativeButton("Negative", listner)

            builder.show()
        }

 

3. 커스텀 다이얼로그

- 기본 다이얼로그에 View를 설정하면 다이얼로그에 표시되는 모양을 자유롭게 구성할 수 있다.

 

1. 커스텀 다이얼로그를 구성할 xml파일을 생성

2. 커스텀 다이얼로그의 builder에 그 뷰를 inflate해서 세팅해준다.

3. 리스너를 통해 다이얼로그 객체를 가져와서 원하는 메뉴를 설정.

 

        커스텀 다이얼로그 버튼(button5)를 누르면 커스텀 다이럴로그가 뜨게하는 예제.

		// 2. 커스텀 다이얼로그
        button5.setOnClickListener { view ->
            var builder = AlertDialog.Builder(this)
            builder.setTitle("커스텀 다이얼로그")
            builder.setIcon(R.drawable.images)

            // 뷰를 세팅
            var v1 = layoutInflater.inflate(R.layout.dialogue, null)
            builder.setView(v1)


            //리스너 세팅
            //사용자가 누른 버튼이 가지고있는 다이얼로그 객체를 가져옴
            var listner = object :DialogInterface.OnClickListener{
                override fun onClick(dialog: DialogInterface?, which: Int) {
                    var alert = dialog as AlertDialog
                    var edit1:EditText? = alert.findViewById<EditText>(R.id.editText)
                    var edit2:EditText? = alert.findViewById<EditText>(R.id.editText2)

                    textView.text = "edit1 : ${edit1?.text} \n"
                    textView.append("edit1 : ${edit2?.text}")
                }
            }

            builder.setNegativeButton("취소", null)
            builder.setPositiveButton("확인", listner)

            builder.show()
        }
    }

 

4. DatePicker

- 다이얼로그를 통해 날짜를 선택할 수 있도록 제공되는 다이얼로그.

        // 3. 날짜 선택할 수 있는 다이얼로그
        button6.setOnClickListener { view ->

            // 캘린더 객체를 받아와서 년,월,일 정보를 가져온다.
            var calander = Calendar.getInstance()
            var year = calander.get(Calendar.YEAR)
            var month = calander.get(Calendar.MONTH)
            var day = calander.get(Calendar.DAY_OF_MONTH)


            // 리스너를 통해 DatePicker가 받아온 년월일을 세팅한다.
            var listner = object:DatePickerDialog.OnDateSetListener
            {
                override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
                    textView.text = "${year}년 ${month +1}월 ${dayOfMonth}일"
                }
            }

            // 데이트 피커 다이얼로그를 show한다.
            var picker = DatePickerDialog(this, listner, year, month, day)
            picker.show()
        }

 

5. TimePicker

- 다이얼로그를 통해 시간을 선택할 수 있도록 제공되는 다이얼로그

        // 4. 시간을 선택하게 하는 다이얼로그
        button7.setOnClickListener { view ->
            var calendar = Calendar.getInstance()
            var hour = calendar.get(Calendar.HOUR)
            var minute = calendar.get(Calendar.MINUTE)

            var listner = object:TimePickerDialog.OnTimeSetListener {
                override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
                    textView.text = "${hourOfDay}시 ${minute}분"
                }
            }

                var picker = TimePickerDialog(this, listner, hour, minute, true)
                picker.show()
            }
        }

 

'Deperecated > Android_강의' 카테고리의 다른 글

안드로이드 - Pending Intent  (0) 2020.02.14
안드로이드 - Notification  (0) 2020.02.14
안드로이드 - 메시징 - Toast  (0) 2020.02.13
안드로이드 - ActionBar  (0) 2020.02.13
안드로이드 - PopupMenu  (0) 2020.02.13