정상에서 IT를 외치다

[Android, Anko Commons, Dialog] Anko Commons 를 사용한 다이얼로그 본문

안드로이드

[Android, Anko Commons, Dialog] Anko Commons 를 사용한 다이얼로그

Black-Jin 2018. 5. 15. 10:27
반응형

코틀린에서 Anko Commons 를 사용한 다이얼로그 사용법에 대해 포스팅 하겠습니다.


먼저 Anko 는 제트브레인에서 직접 제작하여 배포한 코틀린 라이브러리 입니다.


안드로이드 어플리케이션 개발에 유용한 함수를 제공하는데요 


Anko는 네 종류의 라이브러리를 나뉩니다.


1. Anko Commons

2. Anko Layouts

3. Anko SQLite

4. Anko Coroutines


이 중 Anko Commons 에 대해 몇가지 포스팅을 해보겠습니다.


먼저 기존의 코틀린에서는 다이얼 로그를 아래와 같이 사용합니다.


val alertDialogBuilder = AlertDialog.Builder(activity)

alertDialogBuilder.setTitle("확인해주세요")
alertDialogBuilder.setMessage("팝업이 생성되었습니다").setCancelable(false)
.setPositiveButton("확인", DialogInterface.OnClickListener({
dialog, which -> // 확인시 수행할 함수
}))

.setNegativeButton("취소", DialogInterface.OnClickListener({
dialog, which -> // 취소시 수행할 함수
}))

// 다이얼로그 생성
val alertDialog = alertDialogBuilder.create()

// 다이얼로그 보여주기
alertDialog.show()


참고로 DialogInterface.OnClickListener 함수는 아래와 같습니다.

/**
* Interface used to allow the creator of a dialog to run some code when an
* item on the dialog is clicked.
*/
interface OnClickListener {
/**
* This method will be invoked when a button in the dialog is clicked.
*
* @param dialog the dialog that received the click
* @param which the button that was clicked (ex.
* {@link DialogInterface#BUTTON_POSITIVE}) or the position
* of the item clicked
*/
void onClick(DialogInterface dialog, int which);
}

변수 dialog 는 클릭되어진 다이얼로그 자신을 나타내며

변수 whitch 는 클릭 된 버튼의 값을 리턴 하거나 (positive 에서는 -1, negative 에서는 -2 를 리턴합니다.)

리스트로 된 다이얼로그에서는 포지션을 리턴 합니다.



이를 좀더 코틀린 스럽게 바꾸면 아래와 같이  DialogInterface.OnClickListener 함수를 생략할 수 있습니다.

val alertDialogBuilder = AlertDialog.Builder(activity)

alertDialogBuilder.setTitle("확인해주세요")
alertDialogBuilder.setMessage("팝업이 생성되었습니다").setCancelable(false)
.setPositiveButton("확인") { dialog, which ->
// 확인시 수행할 함수
}

.setNegativeButton("취소"){ dialog, which ->
// 취소시 수행할 함수
}

// 다이얼로그 생성
val alertDialog = alertDialogBuilder.create()

// 다이얼로그 보여주기
alertDialog.show()



자 이제 Anko Commons 를 사용해 다이얼로그를 만들어 보겠습니다.


0. app 의 build.gradle 에 다음과 같이 추가합니다. (ankoVersion = '0.10.2')

//anko Commons
implementation "org.jetbrains.anko:anko-commons:$ankoVersion"
implementation "org.jetbrains.anko:anko-appcompat-v7-commons:$ankoVersion"
implementation "org.jetbrains.anko:anko-support-v4-commons:$ankoVersion"

필요에 따라 anko-appcompat-v7-commons 또는 anko-support-v4 를 빌드스크립트 내 의존성에 추가하시면 됩니다.


예륵 들어 android.support.v4.app.Fragment 에서 Anko 를 사용하기 위해서는 anko-support-v4  를 추가해 주셔야 합니다.


그러면 아래와 같이 alert 함수 하나만으로 다이얼 로그를 만들 수 있습니다.


alert(title = "확인해주세요", message = "팝업이 생성되었습니다.") {

positiveButton("확인") {
// 확인시 수행할 함수
}

negativeButton("취소") {
// 취소시 수행할 함수
}
}.show()

fragment 에서 사용하기 위해서는 alert 앞에 activity(getActivity) 를 붙이셔야 합니다. 

activity.alert(title = "확인해주세요", message = "팝업이 생성되었습니다.") { ... }


반응형
Comments