안드로이드 Border 공통 코드

SSY·2023년 1월 2일
0

Refactoring

목록 보기
1/1

2023.02.25 덧붙임
컴포즈를 사용하면 아래 코드는 사용할 필요가 없는 코드이다. 눙물이 난다.

보통 코딩을 하며 프로젝트가 커지면 border관련 코드가 다음과 같이 쫘르륵 중복되어 나왔다

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <corners
        android:radius="4dp"/>
    <stroke
        android:width="1dp"
        android:color="@color/mint" />
</shape>

이러한 형태의 녀석이다.

그리고 이는 관리하기도 매우 어려워진다. 방법이 없을까 생각하다가 Programatic한 방법이 있다는것을 알았다. 그리고 이를 다음 하나의 메소드를 통해 관리할 수 있음을 알았다. 다음 프로젝트때 적용해야겠다.


@BindingAdapter("kakao:borderColor", "kakao:textColor", "kakao:radius", requireAll = false)
fun TextView.drawBorder(borderColor: Int?, textColor: Int?, radius: Int?
) {
    this.setTextColor(
        ContextCompat.getColor(
            this.context,
            textColor ?: R.color.black)
    )
    val border = GradientDrawable().apply {
        this.setStroke(DensityUtil.dpToPx(1),
            ContextCompat.getColor(
                this@drawBorder.context,
                borderColor ?: R.color.black))
        cornerRadius = DensityUtil.dpToPx(radius ?: 4).toFloat()
    }
    background = border
}
profile
불가능보다 가능함에 몰입할 수 있는 개발자가 되기 위해 노력합니다.

0개의 댓글