본문 바로가기
안드로이드

[안드로이드] 현업에서 유용한 코틀린 확장함수(extension function) 예시 총 정리

by Best Coding 2025. 1. 15.
반응형

현업에서 사용하는 안드로이드 앱 개발 확장 함수 적용 예시 총 정리

 

 

안드로이드 앱 개발을 하다 보면 코드를 더 깔끔하게 만들고, 반복적인 작업을 줄이기 위해 다양한 방법을 고민하게 됩니다. 확장 함수는 자주 사용하는 기능을 기존 클래스에 쉽게 추가할 수 있도록 도와주는 강력한 도구입니다. 이 글에서는 안드로이드 개발자가 실무에서 자주 활용하는 확장 함수를 예시와 함께 소개하겠습니다.


 

1. 확장 함수(Extension Function)란?

코틀린 언어는 확장 함수라는 기능을 제공합니다. 이와 관련된 자세한 설명은 아래 링크에 잘 정리했습니다.

2025.01.15 - [코틀린(kotlin)] - 코틀린 확장 함수(Extension Function) 총 정리 - 개념, 사용방법, 확장 프로퍼티, 제네릭 확장함수, 장단점, 주의점, 현업 사용 예시, 고차함수에 확장함수 적용하기

 

코틀린 확장 함수(Extension Function) 총 정리 - 개념, 사용방법, 확장 프로퍼티, 제네릭 확장함수, 장

1. 확장 함수란?코틀린에서 확장 함수(Extension Function)는 기존 클래스에 새로운 메서드를 추가하는 것처럼 사용할 수 있는 기능입니다. 기존 클래스를 수정하거나 상속하지 않고도 원하는 기능을

best-coding.tistory.com

 

 

 

2. View 확장 함수 예시

(1) View의 가시성 제어

안드로이드에서는 View의 가시성을 VISIBLE, INVISIBLE, GONE으로 설정하는 경우가 많습니다. 이를 확장 함수로 간단하게 처리할 수 있습니다.

fun View.show() {
    visibility = View.VISIBLE
}

fun View.hide() {
    visibility = View.INVISIBLE
}

fun View.gone() {
    visibility = View.GONE
}

이 확장 함수를 사용하면 다음과 같이 코드가 더 직관적으로 바뀝니다.

button.show()
textView.gone()

 

 

(2) Snackbar 확장 함수

사용자에게 간단한 메시지를 보여줄 때 Snackbar를 자주 사용합니다. 이를 확장 함수로 정의하면 더 간편하게 사용할 수 있습니다.

fun View.showSnackbar(message: String, length: Int = Snackbar.LENGTH_SHORT) {
    Snackbar.make(this, message, length).show()
}

다음과 같이 호출할 수 있습니다.

button.showSnackbar("저장되었습니다")

 

 

(3) Context 확장 함수 예시

1) Toast 메시지 출력

안드로이드에서 Toast 메시지를 출력할 때 매번 Toast.makeText를 호출하는 것이 번거로울 수 있습니다. 확장 함수를 활용하면 간단하게 처리할 수 있습니다.

fun Context.showToast(message: String, duration: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(this, message, duration).show()
}
context.showToast("로그인 성공")

 

2) AlertDialog 생성

fun Context.showAlertDialog(title: String, message: String) {
    AlertDialog.Builder(this)
        .setTitle(title)
        .setMessage(message)
        .setPositiveButton("OK") { dialog, _ -> dialog.dismiss() }
        .show()
}

fun main() {
    context.showAlertDialog("Title", "This is a message")
}

 

3) 입력 키보드 숨기기

fun Context.hideKeyboard(view: View) {
    val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(view.windowToken, 0)
}

fun main() {
    context.hideKeyboard(view)
}

 

4) 디바이스 화면 크기 가져오기

fun Context.getScreenSize(): Pair<Int, Int> {
    val displayMetrics = resources.displayMetrics
    return Pair(displayMetrics.widthPixels, displayMetrics.heightPixels)
}

fun main() {
    val (width, height) = context.getScreenSize()
    println("Width: $width, Height: $height")
}
반응형

 


 

 

4. String 확장 함수 예시

(1) 이메일 형식 검사

사용자의 입력이 이메일 형식인지 검사하는 기능은 자주 필요합니다. 이를 확장 함수로 작성할 수 있습니다.

fun String.isValidEmail(): Boolean {
    return Patterns.EMAIL_ADDRESS.matcher(this).matches()
}
val email = "example@domain.com"
if (email.isValidEmail()) {
    // 유효한 이메일
}

 

(2) 문자열 줄이기(ellipsize)

길이가 긴 문자열을 일정 길이로 줄이고 끝에 "..."을 붙이는 확장 함수입니다.

fun String.ellipsize(maxLength: Int): String {
    return if (this.length > maxLength) this.substring(0, maxLength) + "..." else this
}
val longText = "안드로이드 확장 함수에 대한 자세한 설명을 제공합니다."
println(longText.ellipsize(10))  // 출력: 안드로이드...

 

 

5. RecyclerView 확장 함수 예시

RecyclerView는 안드로이드에서 리스트 형태의 UI를 만들 때 자주 사용됩니다. Adapter 설정을 더 간편하게 할 수 있도록 확장 함수를 정의할 수 있습니다.

fun RecyclerView.setup(adapter: RecyclerView.Adapter<*>, layoutManager: RecyclerView.LayoutManager) {
    this.adapter = adapter
    this.layoutManager = layoutManager
}
recyclerView.setup(myAdapter, LinearLayoutManager(context))

 

 

확장 함수는 안드로이드 개발에서 자주 반복되는 코드를 줄이고, 가독성을 높이는 데 유용한 도구입니다. 위에서 소개한 예시 외에도 다양한 방식으로 확장 함수를 활용할 수 있습니다. 실무에서 자주 사용하는 기능을 확장 함수로 만들어 두면 코드 품질을 높이고 유지보수성을 향상시킬 수 있습니다. 확장 함수를 잘 활용하여 더 효율적인 안드로이드 개발을 하면 좋을 것 같습니다.

반응형

댓글