ANDROID

[Kotlin] Anko 라이브러리 사용하기

keyman4949 2020. 8. 4. 17:51

코틀린 소스에 있어서 가장 많은 시너지 효과를 볼수 있었던것은 jetbrains의 Anko라이브러리였습니다.

 

코틀린 + Anko를 사용하게됨으로써 소스를 매우 많이 단축 시킬 수 있었습니다.

사용법과 예제를 통해 보겠습니다.

 

1. Anko라이브러리 사용 등록

build.gradle :project

buildscript{
 ...
 ext.anko_version = '0.10.8'
 ...
}

 

buid.gradle :app

dependencies {
 ...
 implementation "org.jetbrains.anko:anko:$anko_version"
 ...
}

- Anko Commons : 인텐트, 다이얼로그, 로그 등을 편리하게 사용하는 라이브러리

- Anko Layouts : 안드로이드 레이아웃을 코드로 쉽게 작성하는 라이브러리

- Anko SQLite : SQLite를 쉽게 사용하는 라이브러리

- Anko Coroutines : 코루틴을 쉽게 사용하는 라이브러리

 

Anko 라이브러리 깃허브 https://github.com/Kotlin/anko

 

2. Anko Commons 사용법

 

Intent

val intent = Intent(this, SomeOtherActivity::class.java)
intent.putExtra("id", 5)
intent.setFlag(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)

Anko Intent

startActivity(intentFor<SomeOtherActivity>("id" to 5).singleTop())

 

Toasts

Toast.makeText(this, "Short Toast Test!", Toast.LENGTH_SHORT).show()
Toast.makeText(this, "Long Toast Test!", Toast.LENGTH_LONG).show()

 

Anko Toasts

toast("Short Toast Test!")
longToast("Long Toast Test!")

 

SnackBars

Snackbar.make(View, "Test!", Snackbar.LENGTH_SHORT).show();

 

Anko SnackBars

view.snackbar("Test!")

 

 

Alerts

val builder = AlertDialog.Builder(ContextThemeWrapper(this, R.style.Theme_AppCompat_Light_Dialog))
                builder.setTitle("Hi, I'm Roy")
                builder.setMessage("Have you tried turning it off and on again?")
                builder.setPositiveButton("yes") {dialog, id ->
                }
                builder.setNegativeButton("no") {dialog, id ->
                }
                builder.show()

Anko Alerts

alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
    yesButton {}
    noButton {}
}.show()

 

Anko Selectors

val countries = listOf("Russia", "USA", "Japan", "Australia")
selector("Where are you from?", countries, { dialogInterface, i ->
    toast("So you're living in ${countries[i]}, right?")
})

 

Anko Progress dialogs

val dialog = progressDialog(message = "Please wait a bit…", title = "Fetching data")