본문 바로가기

Android

(72)
[XML] AmbientLightView 1 인 개발을 진행했던 앱 '에이펙싱' 의 디자인이 너무 별로여서 새롭게 리뉴얼 중입니다. UI 를 개선함과 동시에 스토어 정보를 보여주는 기능을 새로이 개발 중에 있는데, 해당 기능의 UI 를 구현하다가 문제가 조금 생겼습니다. 스토어의 아이템은 특별 상품들인 Specials 와 일반 상품들인 Shop 으로 분류가 되는데, 각 상품군의 분류가 확실히 되지 않아서 해당 View 의 Elevation Color 를 변경하여 구분하려 했습니다. 관련된 속성을 사용하려 했으나, minSDK 와 호환이 되지 않는 이슈가 발생하여, 이를 해결하기 위해 CustomView 를 구현하였습니다. 물론 라이브러리를 사용해도 되고, minSDK 를 올려도 되지만, 저는 minSDK 만은 올리지 않겠다는 생각을 갖고 있기 ..
Fragment Lifecycle 과 UX (feat.Navigation Component) Intro 상용 앱들을 보면 Activity 와 Fragment 를 1:N 으로 두는 앱이 참 많습니다. 하나의 Activity 에 여러 개의 Fragment 를 두다 보니, 자연스럽게 Android Navigation Component 를 사용하게 됩니다. Navigation Component 는 Fragment 간 상호작용과 데이터 통신을 간편하게 구현할 수 있도록 지원하며, Fragment to Fragment 에 Animation 도 비교적 편리하게 적용할 수 있습니다. 또한, AndroidStudio 3.3v 부터는 Navigation GUI 를 지원하기 때문에 앱의 전체적인 시나리오를 한 눈에 볼 수 있어, 개발 편이성도 증가시켜줍니다. Navigation Component 는 Fragment..
[XML] LineWork 각종 계산을 통해서 텍스트가 위치할 정중앙 값을 구하여 배치한 TextView 입니다. 저는 심플하고 깔끔한 디자인을 좋아하여 자주 사용하게 될 것 같습니다. 라인과 텍스트의 색상, 두께의 변경이 가능하며 텍스트의 경우, 폰트도 변경할 수 있도록 하였습니다. 애니메이션을 사용하여 감성 가득한 View Interaction 을 구성할 수 있습니다. 앱 온 보딩시 사용하면 좋을 듯 합니다.
[XML] HeaderTextView 헤더가 있는 뷰. 버튼으로 사용할 수도 있습니다. 헤더 텍스트의 색상, 크기 조절이 가능하며, 바디 텍스트의 경우 기본 텍스트뷰의 모든 속성을 사용할 수 있습니다. 테두리의 두께 역시 조절이 가능합니다. 근데 만들고 보니 현대카드 앱 느낌이 좀 나는 것 같습니다. 내친 김에 폰트까지 받아서 현대카드 처럼 만들었습니다. 색 배합을 다르게 하여 팬시한 연출도 가능합니다.
[XML] ColoredBorderView 처음엔 사각형에 색상있는 테두리를 넣으려고 했던 건데, 구현을 하다보니 색상 변화를 넣으면 재미있을 것 같아 넣어보았습니다. 그랬더니 불 들어오는 마우스 패드 느낌도 납니다. 색상 변화 애니메이션은 클래스 내부 companion object 블럭에 객체를 생성했습니다. 테두리의 색상과 두께 조절 및 전체 사이즈 조정이 자유롭게 가능합니다. 내부 색상 역시 변경할 수 있으며, 애니메이션을 재생하지 않을 수 있습니다.
LiveData 를 선언하는 방법 (get Keyword) LiveData 및 MutableLiveData 가 안드로이드 플랫폼에서의 MVVM Architecture 구현에 큰 역할을 해왔다는 사실에는 누구도 부정할 수 없습니다. 구현이 복잡하고 보일러 플레이트 코드가 많은 Observer Pattern 을 대체하여 간편하게 사용할 수 있기 때문입니다. StateFlow 와 SharedFlow 가 추가되면서 그 입지가 많이 줄었지만, 그래도 여전히 수많은 안드로이드 앱에 사용되고 있습니다. 저는 개발 공부를 할 때 다른 개발자들의 코드를 많이 참고하는 편입니다. 그 개발자들을 선택하는 기준은 두 가지인데, - 유명한 개발자 - 좋은 품질의 코드를 개발할 수 있는 환경에 있는 개발자 가 그 것입니다. 그러한 개발자들의 여러 코드를 쭉 살펴보면, 보통 소속 집단이나..
[XML] Expandable Layout 라이브러리 없이 구현하기. Intro 야심차게 준비한 앱을 마켓에 출시한지 며칠 뒤, 서버 비용 및 API 서버 이슈로 인해 서버가 내려가는 이슈를 겪었습니다. 그다지 크리티컬한 이슈는 아니었지만, 백엔드 담당자분께서 내리신 결론이었기에 그저 따르기로 했습니다. 백엔드 담당자분의 요청으로 굉장히 짧은 시간 안에 앱을 구현, 출시했습니다. 그 과정에서 발생한 기술 부채 및 각종 하드코딩된 부분들을 해결하고 싶었으나, 애초에 서버가 내려가서 의미 없는 작업이 되고 말았습니다. 디자인을 담당해주셨던 분과 긴 시간 대화를 나눴고, 끝내 저희가 내린 결론은 '백엔드를 배제하고 앱을 새로 만들어서 재출시하자' 였습니다. 주 3회에 이르는 잦은 회의와 빠듯한 일정으로 인해 디자인이나 앱이나 모두 각 담당자의 마음에 쏙 들지는 않았던 것 같습니..
자주 쓰는 Intent Flag Intent Flag 4대 컴포넌트 (Activity, Service, Broadcast, ContentResolver) 간 통신을 하려면 Intent 를 사용하여야 합니다. 안드로이드 앱 개발시 가장 빈번히 사용되는 경우는 단연 Activity 간 이동입니다. 이 Activity 들은 Task 라는 Stack 에 적재되며, 기기의 백 버튼을 누르면 pop() 됩니다. 즉, 화면에 보이는 Activity 는 삭제되고, 직전의 요소가 화면에 나타납니다 Task 에 적재되는 Activities 를 관리하는 것 역시 개발자의 몫이며(물론 시간이 오래 지나도록 사용하지 않는 Activity 는 OS 차원에서 제거해주기도 합니다.) 관리를 해야하는 이유는 당연히 Memory leak 에 대한 위험입니다. 개발을 ..