상상하라 그리고 현실로 만들어라.

상상하는 모든 것이 미래다.

Kotlin과 Android/Android

코틀린 안드로이드 Anko 라이브러리로 Intent 하기

월터제이(Walter J) 2020. 10. 27. 09:00

안녕하세요, 반갑습니다!

 

안드로이드 라이브러리중 정말 편하고 코딩이 엄청 쉬워지는 라이브러리들이 있습니다.

그 중 오늘 소개드릴 라이브러가 있는데요.

무려 코틀린을 개발한 JetBrain에서 만든 라이브러리이기도 합니다.

 

바로,

 

 

Anko 라이브러리

 

 

 

Anko 라이브러리는 다음 4가지로 구성되어 있습니다.

 

1. Anko Commons

2. Anko Layouts

3. Anko SQLite

4. Anko Coroutines

 

오늘은 이 4가지 중  Anko Commons에 대해 정리해볼까 합니다.

이 Commons 에는 대표적으로 인텐트와 다이얼로그를 간단하게 작성할 수 있는 라이브러리입니다.

 

 

Anko를 사용해서 Intent 간단하게 하기

 

 

 

1. Project, Module 단의 각 Gradle 에 라이브러리 추가하기

일단 Project 단의 Gradle 입니다.

아래와 같이 anko 버전을 입력해주세요.

(Module 단의 Gradle 에 직접 버전을 입력하면 여기엔 작성하지 않아도 됩니다)

buildscript {
    ext.anko_version = "0.10.8"
    .
    .
    .

 

이제 Module 단의 Gradle 에 아래와 같이 작성해주세요.

그리고 안드로이드 스튜디오 상단에 나타나는 'Sync Now' 를 클릭하여 Project에 적용해주세요.

implementation "org.jetbrains.anko:anko:$anko_version"

 

네, 이렇게 준비는 끝났습니다.

그럼 Anko 라이브러리를 이용해서 Intent, 즉 액티비티 이동을 해보겠습니다.

 

2. startActivity 호출하기

시작할 액티비티에서 아래와 같이 작성해주세요.

startActivity<Activity2>()

끝났어요ㅎㅎ

어떤가요? 화면전환이 잘 되시나요?

기존 Intent에 비해 코드양이 단 한줄로 줄었습니다.

 

하지만 아직 2% 부족합니다.

네, 바로 데이터 전달입니다.

 

3. 데이터 전달하기

기존 Intent 에서는 이렇게 데이터를 전달했습니다.

//intent 사용하여 화면 전환
val intent = Intent(this, Activity2::class.java)
intent.putString("MY_NAME", "매지컬 코드")
intent.putInt("MY_AGE", 1)

startActivity(intent)

 

이제 Anko 로 아래와 같이 더 간단히 전달할 수 있습니다.

to 연산자를 통해 키와 값으로 객체를 전달합니다.

startActivity<Activity2>("sendData" to "This is Data")

 

그럼 데이터를 받는 액티비티에서는 어떻게 받을 수 있을까요?

아래와 같이 간단히 객체를 자동으로 만들어 "intent" 를 바로 쓸 수 있습니다.

단, 이름은 "intent" 로 고정되어 있으니 유념해서 사용해주세요.

val receiveTxt: String? = intent?.getStringExtra("sendData")

 

이렇게 anko 라이브러리를 이용해서 간단하게 Intent를 사용할 수 있었습니다.

간단하고 확실히 코드가 줄었죠?

그럼 두번째 다이얼로그는 어떻게 띄울 수 있는지 보겠습니다.

 

 

 

Anko 로 Alert 다이얼로그(Alert Dialog) 간단하게 사용하기

(매우쉬움주의)

 

 

 

1. alert 바로 띄우기

간단하게 alert() 함수를 사용할 수 있습니다.

그러면 아래와 같이 작성해서 간단히 띄울 수 있습니다.

alert(title="AlertTitle", message="Message") {
    positiveButton("확인") { 
    	toast("확인 되었습니다.") 
    }
    negativeButton("취소") { 
    	toast("취소 되었습니다.") 
    }
}.show()

 

 

 

어떠신가요? 확실히 anko 라이브러리가 편하신가요?

저는 작성하는 코드 양이 줄어서 너무 좋고 편하더라구요.

그리고 조금 더 직관적인 것 같아요.

 

그럼 저는 다음 Anko Layouts 에 관한 포스팅을 준비해보도록 하겠습니다.

감사합니다.

반응형