금번에 SeekBar의 Thumb에 새로운 인터랙션을 주게 되면서
기존에 적용해 둔 Listener에 ColorFilter를 먹이고자 했다.
하지만 ColorFilter를 먹이던 시절은 이미 오래 전이었고.. 현재는 deprecated 된 요소였던 것이다.
그러면 무엇을 써야하는 것인가? 검색을 통해 BlendModeColorFilter라는 클래스를 찾을 수 있었다.
이 클래스를 통해 기존 PorterduffMode에서 사용하던 파라미터들을 그대로 적용해 쓸 수 있었고,
결과적으로 progress 값에 따라 Thumb의 색상이 바뀌도록 할 수 있었다.
- seekbar의 참조는 binding 클래스를 통해 참조하였으며, 이는 findViewById 등으로도 대체가 가능하다.
var dynamicThumbColor: Int
val seekbarChangeListener = object: Seekbar.OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
// argb의 alpha의 경우 MAX 값이 255라는 걸 유념할 것.
// MAX_RGB는 255로 지정해 progress 값에 따라 빨간색에서 파란색으로 색상이 변경되도록 하였음.
// 별도의 매핑 연산을 넣지 않아 러프하게 색상이 들어갈 것임.
dynamicThumbColor = Color.argb(255, MAX_RGB-progress, 0, progress)
binding.balanceSeekbar.thumb.mutate().colorFilter =
BlendModeColorFilterCompat.createBlendModeColorFilterCompat(dynamicThumbColor,
BlendModeCompat.SRC_ATOP)
binding.balanceSeekbar.invalidate()
}
https://stackoverflow.com/questions/56716093/setcolorfilter-is-deprecated-on-api29/56717316
'ANDROID > UI - UX' 카테고리의 다른 글
[안드로이드] Elevation 효과가 적용된 CardView ViewPager 구현하기 (0) | 2020.04.05 |
---|---|
[안드로이드] ViewPager의 페이지 별 요소를 참조할 때의 유의점 (0) | 2020.03.09 |
[안드로이드/MpAndroidChart] MpAndroidChart에서 Marker 커스텀하기 (0) | 2020.02.25 |
[안드로이드] ConstraintLayout + CollapsingToolbarLayout 활용해 접히는 TabBar 구현하기 (0) | 2020.01.29 |
[안드로이드] RecyclerView에서 클릭한 아이템의 position을 간단히 받아오기 (0) | 2019.11.13 |