본문 바로가기

안드로이드

(80)
[안드로이드] Material Design의 Chips를 사용해보자 Google은 Material Design과 함께 별도로 안드로이드에서 바로 사용 가능한 Component들을 제공하고 있다. 이 중 필터링 설정이나 작은 텍스트를 보여주는데 유용한 Chips를 사용해봤다. Material Design에서는 다음과 같은 네 종류의 Chip들을 정의하고 있다. Entry Chip Filter Chip Choice Chip Action Chip Entry Chip은 복잡한 정보를 간략하게 보여 줄 때 사용하도록 권장하고 있고, chip 아이콘과 닫기 아이콘을 별도로 설정이 가능하다. 추가적으로 체크 상태(선택된 상태)를 지정이 가능하다. Fliter Chip은 검색 결과나 내용등에 필터를 걸 때 사용하도록 권장하는 chip이다. 추가적으로 체크 상태(선택된 상태)를 지정이 ..
[안드로이드 | 코틀린 ] 뷰가 겹치는 상황에서 터치 우선순위 관리하기 보통 이런저런 상호작용이 들어가는 UI/UX 를 개발하다 보면 겹치는 뷰로 인해 골머리가 썩게 되기 마련이다. 이번 경우에는 BottomSheetBehavor가 적용된 Layout과 부모뷰인 SwipeRefreshLayout간의 간섭으로 인해 생기는 이슈였는데, 펼쳐진 자식뷰가 Swipe 가능한 부모뷰를 전부 덮게 되면서, 스와이프로 내릴 수 있는 자식 뷰를 내리지 못하고 부모뷰를 통째로 스와이프 해버리게 되어 결론적으로 펼쳐지고 나서는 접을 수가 없는 상황이 생겨버렸다. 터치 이벤트의 우선순위를 조정이 가능하단 것은 인지하고 있었는데, 이를 어떻게 지정해주어야 하는가? 검색끝에 깔끔한 해결책을 찾을 수 있었다. 우선순위를 두고자 하는 뷰에 onTouchListener를 넣어 특정 조건에서 부모 뷰에 r..
[안드로이드] Elevation 효과가 적용된 CardView ViewPager 구현하기 이번에 매터리얼 카드뷰 형태의 ViewPager를 구현해야 하는 요구사항이 생기면서, 일전에 한번 스쳐본 적이 있던 레퍼지토리에 다시 방문했다. rubensousa/ViewPagerCards ViewPager cards inspired by Duolingo. Contribute to rubensousa/ViewPagerCards development by creating an account on GitHub. github.com 해당 레퍼지토리에서는 일반적인 CardView 형태의 ViewPager 구현은 물론 Elevation 효과까지 적용 가능한 코드들을 제공하고 있다. JAVA 기반 소스이기에 이를 프로젝트에 적용하면서 코틀린 및 binding된 요소들과 섞는 작업을 했다. 작업을 진행하면서 필요한..
[Jacoco] Jacoco와 gradle로 프로젝트 코드 커버리지 확인하기(Gradle 3.6 버전 이상의 경우) Unit test를 도입하게 되면서 같이 도출하고 싶어 했던 지표는 물론 프로젝트의 코드 커버리지였다. 전반적인 프로젝트가 얼마나 테스트 되었는지, 어디가 테스트가 부족한지를 쉽게 알 수 있는 코드 커버리지 도출은 필요한 것이고 직접 눈으로 보고 싶은 것이기도 했다. (배그 한판이 끝날 때마다 OPGG를 리프레시하는 심정이랄까) 0. 실행환경 - 최근 Android studio와 함께 업데이트 된 최신 Gradle Version 3.6.1 이 사용되었다. - 프로젝트의 언어는 Kotlin으로 짜여져있다. 1. 설정하기 app level의 gradle 코드에 아래 코드들을 추가한다. - 기본설정 // jacoco와 application plugin 추가 apply plugin: 'com.android.ap..
[Testing] 테스트 피라미드를 통해 테스팅의 세가지 범주 살펴보기 금번에 신규 업데이트를 준비하면서 이전부터 해보고 싶던 유닛 테스트를 도입해보고자 했고, 팀원들에게 적극 추천해보기로 했다. 우선 추천을 하기 전에 테스팅이 무엇인가, 왜 테스팅을 해야하는가에서 출발하기 위해 자료를 열심히 찾았고 찾아낸 테스트 피라미드를 기점으로 출발점을 가져가기로 했다. 안드로이드 공식 문서에서도 테스팅에 관해 다양한 항목을 통해 심층적으로 다루고 있으니, 이미 테스트 피라미드를 보신 분들은 구글 문서를 통해 더 깊게 배워보는 것이 좋겠다. https://developer.android.com/training/testing/?hl=ko Android에서 앱 테스트 | Android 개발자 | Android Developers Android에서 앱 테스트 Android Jetpack의 ..
[안드로이드] ViewPager의 페이지 별 요소를 참조할 때의 유의점 ViewPager에 개별 페이지를 구현하고자 할 때에는 기존 방식에서 이슈가 없었는데, 개별 페이지 내에서 조작해야 하는 요소가 들어가고 나니 문제가 생겼다. 페이지를 이동하면서 페이지들의 생명주기가 변하는 것, 그리고 참조값이 달라지기 때문인지 넣어준 버튼들과 터치 이벤트가 제대로 동작하지 않았다. 이를 해결해주기 위해서는 Adapter 내에서 instantiateItem을 override 해주어야 했다. override한 instantiateItem 내부에 참조하는 요소들을 지역변수로 할당해주니 페이지 별로 참조하고자 했던 요소들이 정상적으로 동작하는 걸 확인할 수 있었다. override fun instantiateItem(container: ViewGroup, position: Int): Any ..
[안드로이드] SeekBar의 Thumb 색상 실시간 변화주기, BlendModeColorFilter 사용하기 (feat. ColorFilter deprecated) 금번에 SeekBar의 Thumb에 새로운 인터랙션을 주게 되면서 기존에 적용해 둔 Listener에 ColorFilter를 먹이고자 했다. 하지만 ColorFilter를 먹이던 시절은 이미 오래 전이었고.. 현재는 deprecated 된 요소였던 것이다. 그러면 무엇을 써야하는 것인가? 검색을 통해 BlendModeColorFilter라는 클래스를 찾을 수 있었다. BlendModeColorFilter | Android 개발자 | Android Developers BlendModeColorFilter public final class BlendModeColorFilter extends ColorFilter A color filter that can be used to tint the source pix..
[안드로이드] 안드로이드 스튜디오 3.6 업데이트, ViewBinding 사용해보기 이번 2월 25일에 안드로이드 스튜디오 버전 3.6이 릴리즈 되면서, 안드로이드 스튜디오의 자잘한 UI/UX 변화와 함께 다양한 기능들이 추가되었다. 이번에 추가된 기능들 중에 먼저 눈에 들어왔던 뷰바인딩을 적용해 본 경험을 공유하고자 한다. https://developer.android.com/topic/libraries/view-binding?utm_medium=studio-assistant-stable&utm_source=android-studio-3-6 뷰 바인딩 | Android 개발자 | Android Developers 뷰 바인딩 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 바인딩 클래스를 생성합..