본문 바로가기
프로그래밍

[Android] 카카오 로그인(v1) 버튼 변경하기

by hansoo.labs 한수댁 2020. 6. 23.

카카오 로그인 라이브러리 v1은 LoginButton 클래스를 이용해서 로그인하는 예제만 나와있다. (내가 못 본 것이라면 정말 정말 찾기 쉽지 않음) LoginButton UI가 이상하게 생겨서 UI는 직접 구현하고 로직을 처리하려고 문서를 찾아봤지만 v2 버전 말고는 없다. 보통 복잡한 로그인 플로우 처리를 설명하고, 그것들을 쓰기 편리하게 UI 클래스 하나로 선물하는데, 카카오 로그인 v1은 선물만 존재해서 확장성이 부족해 보인다.

어째든, 그래서 레이아웃을 새로 만들고 LoginButton 을 확장해서 UI를 변경했다. 일부러 이렇게 사용하란 것처럼 함수들이 외부로 노출되어 있어서 다행이다.

class KakaoLoginButton
@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
    LoginButton(context, attrs, defStyle) {

    override fun onAttachedToWindow() {
        super.onAttachedToWindow()
        // 기본 레이아웃 제거
        removeAllViews()
        setOnClickListener(null)
        // 커스텀 레이아웃으로 다시 설정
        val v = inflate(context, R.layout.custom_kakao_login_button, this)
        val button: Button = v.findViewById(R.id.button)
        // 버튼에 기존 함수 연결
        button.setOnClickListener {
            HLog.d(TAG, "KakaoLoginButton", "click")
            val authTypes = authTypes
            onClickLoginButton(authTypes)
        }
    }
}

레이아웃을 제거하고 다시 설정하는 부분이 찜찜하긴 하지만.. 이게 최선이라고 생각한다.

물론 v2를 사용하면 되겠지만, 이번 프로젝트는 Rx 라이브러리 없이 작업하고 있는 상황이라서 v2를 사용할 수 가 없다. 개인적으로 카카오 로그인 v2가 Rx를 베이스로 만들어진 것은 아주 별로라고 생각한다. Rx는 그 자체로 큰 영역을 차지하고 있는 개발방식 영역인데 이것까지 이해해야 한다는 것은 Rx 초보자에게 무리라고 본다. 안드로이드의 Rx 확장 라이브러리처럼, 코틀린 Extention 이나 랩핑 클래스를 만들어서 Rx로 확장해서 쓸 수 있게 해줘야 한다고 생각한다.

특히 v2를 쓸 때, CompositDisposable를 꼭 생성해줘야 하거나 관리해줘야 하는 것은 Non-Rx 프로젝트를 만드는 데, 정말 과한 의존성 라이브러리라고 본다.

댓글0