안드로이드에서 팔레트로 색상을 선택할 수 있는 기능을 구현하고 싶었는데
이걸 RadioButton을 커스텀해야하나.. IconToggleButton을 사용해서 구현해야하나.. 복잡한 방법밖에 떠오르지 않아서 이것저것 구글링해보다가 내가 원하는 형태로 바로 구현 가능한 colorSheet 라는 라이브러리를 발견했다 🤩
//color Sheet
implementation "dev.sasikanth:colorsheet:1.0.1"
build.gradle(모듈단위) 에 implementation 해준다
private fun setColor() {
val colors = resources.getIntArray(R.array.colors)
ColorSheet().colorPicker(
colors = colors,
listener = { color ->
// Handle color
binding.createColorPicker.backgroundTintList = ColorStateList.valueOf(color)
Log.d("colorInt", "${color}")
})
.show(supportFragmentManager)
}
색깔 설정하는 부분을 함수로 빼서 사용했다
R.array.colors는 팔레트에 넣을 색상 종류가 담긴 array이다
binding.createColorPicker.backgroundTintList = ColorStateList.valueOf(color)
로 선택된 색깔로 지정해준다.
<resources>
<array name="colors">
<item>#99C0F6</item>
<item>#BADFD2</item>
<item>#F6ED99</item>
<item>#F6BA99</item>
<item>#B199F6</item>
</array>
</resources>
Log.d("colorInt", "${color}")
Log.d("colorString", ColorSheetUtils.colorToHex(color))
color를 그냥가져오면 Int형인데 ColorSheetUtils.colorToHex(color)
로 Hex Code #RRGGBB 형태로 색상정보를 가져올 수 있다.