본문 바로가기

안드로이드26

[Android] Compose 중첩 내비게이션의 문제와 해결 (How To handle a problem about nested navigation in Jetpack Compose) 복잡한 프로젝트 요구사항을 만족시키기 위해서는 중첩된 내비게이션을 필요로 하게 된다. 이 글에서는 중첩 내비게이션을 사용할 때 발생할 수 있는 문제와 해결 방법에 대해 살펴보고자 한다. 이 문제는 불티 프로젝트를 진행하면서 실제로 발생한 문제이며, 간소화된 예제 코드는 아래 리포지토리에서 확인할 수 있다.https://github.com/HamBP/nested-navigation-example GitHub - HamBP/nested-navigation-example: Compose에서 중첩 내비게이션을 구현할 때 발생할 수 있는 문제를Compose에서 중첩 내비게이션을 구현할 때 발생할 수 있는 문제를 해결한 예시. Contribute to HamBP/nested-navigation-example dev.. 2024. 5. 3.
[Android] Compose를 이용하여 스크롤 가능한 Appbar 만들기 (How to make scrollable appbar) 이 글에서는 스크롤과 상호작용하는 앱바를 구현할 예정이다. 스크롤과 함께 앱바의 일부가 사라지며, 다시 반대방향으로 끝까지 스크롤하면 다시 등장하는 코드를 작성해 보자. 이 글에서는 nestedScroll를 이용할 생각이다. ConstraintSets과 MotionLayout을 이용하는 방법도 고려해 보았으나 이 예제에서는 nestedScroll이 더 적절한 방법이다. nestedScroll 공식문서에서는 우리의 요구사항과 유사한 동작의 예시 코드를 제공한다. 먼저 이 코드를 기반으로 구현한 뒤 우리의 요구사항대로 변경하고, 그 과정에서 발생할 수 있는 문제들을 살펴볼 예정이다. 샘플 코드 이 글의 샘플 코드는 아래 리포지토리에서 확인할 수 있다. https://github.com/HamBP/scroll.. 2024. 3. 10.
[Android] 간격이 안 맞아요! (feat. Compose typography) 디자인 QA를 하다 보면 디자이너의 "이거 왜 이렇게 생겼지?"라는 말을 들어봤을 것이다. 물론 농담이다. 위 내용은 UI에 대한 얘기가 아니었다. 이 글에선 TextStyle을 이용해 폰트 시스템을 적용할 때 발생할 수 있는 문제와 해결 방법에 대해 공유할 예정이다. Compose의 Typography에 대한 기본적인 사용 방법에 대해서 설명하지는 않는다. 1. LineHeight만 적용했을 때 발생할 수 있는 문제 어쨋든 디자인 QA를 받았을 때 위와 같이 텍스트 사이의 간격에 대한 QA가 빗발쳤다. 그치만 나는 lineHeight까지 적용해줬는데, 왜 이런 문제가 생겼을까? 물론 수동으로 패딩 값을 맞춰주는 방법도 있지만 개발자라면 이런 반복 작업을 좋아하진 않을 것이다. iOS는 수동으로 해야한다.. 2024. 2. 27.
[Android] 플러그인을 이용하여 공통 설정 없애기 멀티 모듈 구성에서 build.gradle(.kts)? 코드를 작성하다 보면 gradle에 공통으로 사용하는 코드가 생긴다. 예를 들면 hilt 사용을 위해 kapt(혹은 ksp) 플러그인과 의존성을 추가한다거나, Java 버전을 설정하는 코드 등이 있다. 버전을 한 번에 변경하는 건 buildSrc나 버전 카탈로그(toml)를 이용해 처리할 수 있다. 하지만 많은 모듈에 같은 코드를 추가하거나 삭제해야 하는 상황이라면? 프로젝트가 지속되어도 일관성을 유지할 수 있을까? 이런 고민을 해결하기 위해 플러그인을 사용할 수 있다. 현재 프로젝트에서 사용할 정도로만 학습했기 때문에 지식을 전달한다기보다는 어떤 과정으로 공통 코드를 추출했는지 시간 순으로 이야기할 예정이다. (정확히 이 상황에 맞는 공식 문서 페.. 2023. 11. 21.
[Android] GitHub Actions를 이용하여 자동으로 PR 테스트하기 테스트 자동화를 공부하게 된 동기 위 사진은 PR 페이지 하단에서 확인할 수 있는 단위 테스트 결과이다. 드로이드 나이츠 2023 앱에서 이런식으로 PR에 대해 테스트를 자동화하는 것을 보고 "멋지다"고 생각했다. 이전에도 한 번 따라해 보려 했으나, 테스트 결과의 성공 실패 여부만 나오고 위와 같이 결과 보고서를 만들어주지는 않았다. 내적인 이유는 멋지다였고, 표면상의 이유는 개발 주기에 테스트를 포함함으로써 서비스의 퀄리티를 높이는 것이다. 요즘 단위 테스트에 대해 공부하고 있기도 하니, 이번에 진행중인 프로젝트에서 단위 테스트로 멋지게 작성할 예정이다. GitHub Actions를 이용한 테스트 자동화 이 글에서는 위 사진처럼 GitHub actions를 활용하기 위한 방법에 대해 살펴볼 예정이다... 2023. 11. 15.
[부스트캠프 웹・모바일 8기] 그룹 프로젝트 시작 (안드로이드) https://github.com/boostcampwm2023/and04-catchy-tape GitHub - boostcampwm2023/and04-catchy-tape: 📼 📼. Contribute to boostcampwm2023/and04-catchy-tape development by creating an account on GitHub. github.com 부스트캠프 마지막 과정인 그룹 프로젝트가 시작되었다. 위 리포지토리에서 진행하고 프로젝트 진행 과정을 외부인이 확인할 수 있도록 상세하게 정리될 예정이니 많관부! 문서 공개 학습 스프린트는 규정상 내용을 공개할 수 없었지만, 그룹 프로젝트는 가이드에 따라 GitHub를 프로젝트와 관련된 많은 내용들을 공개해야 한다. 우리 팀은 일정 관리를 .. 2023. 11. 8.
[Android] 네트워크 요청을 처리하는 여러 가지 방법 (Retrofit2, 비동기 처리) 참고사항 : 이 글은 Coroutine 위주로 설명하고 있으며, ReactiveX 라이브러리에 대해서는 설명하지 않는다. Retrofit의 활용 방법 위주로 설명하고 있으며, 코루틴이나 상태 관리 방법에 대해 자세히 다루지는 않는다. 개인적인 의견이 포함되어 있으므로 정답을 찾는다는 생각보다는 참고 코드 정도로 활용하는 것이 좋다. 0. 잡담 "안드로이드 retrofit"이라고 검색하면 약 10번째에 과거에 작성했던 내 글이 나온다. ("android retrofit" 검색은 약 40번째) 해당 글은 응애 시절에 작성했던 글로 적절하지 않은 내용을 소개하고 있다. 부끄럽게도 누적 조회수가 1000을 넘겼다. 그래서 더 정확한 내용을 소개하기 위해 새로 작성하게 되었다. 정확하지 않은 내용을 작성하더라도 .. 2023. 10. 15.
[Android] Compose를 이용한 애니메이션 ※ 완성되지 않은 코드입니다. 참고만 해주세요. 애니메이션을 넣게 된 계기 넥스터즈에서 비교적 작은 규모의 프로젝트를 진행하게 되어서 디자이너 분께 애니메이션 같은 인터렉션을 넣어도 괜찮다고 말씀드렸다. 그 결과 구현하게 된 UI는 위와 같다. 애니메이션은 대략 위와 같고 디테일은 아직 잡혀있지 않은 상태이다. 코드도 아직 정리되어 있지는 않다. 돌아가는 형태의 UI가 있고, 토글(?) 버튼을 누르면 펼쳐져서 한 번에 많은 폴더를 확인할 수 있다. 토글버튼을 눌렀을 때 확장되는 애니메이션을 제외하고는 사실 그래픽 요소이다. 단계별로 구현하자 아무래도 한 번에 구현할 수 있는 UI는 아니어서 단계별로 나누어 구현했다. 위 사진은 노션에 대충 휘갈겨 놓은 내용으로 나만 알아볼 수 있다. 막상 구현해 보니 어.. 2023. 8. 19.
안드로이드 노트 아무거나 막 적는 곳 안드로이드 에뮬레이터에서 네트워크를 차단하는 방법 계기 : 넥스터즈 4주차 UT에서 실기기 테스트 중 네트워크가 연결되어 있지 않았을 때 발생하는 크래시 발견! 생각 : 어떻게 에뮬레이터에서 재현해야 할까? 에뮬레이터에서 인터넷을 의도적으로 끌 수 있지 않을까? 검색어 : how to disable internet in android emulator 결론 : 그냥 에뮬레이터에서 데이터랑 와이파이를 끄면 된다. 회고 : 에뮬레이터가 컴퓨터에서 돌아가니까 무의식 중에 컴퓨터 네트워크를 끊어야 하나 생각했나보다 ㅋㅋㅋㅋㅋㅋ 재귀로 작성한 UI 반복으로 변경 이런 형태의 UI였다. 왜 그런 바보같은 짓은 했는지는 모르겠지만 처음엔 이 UI를 재귀로 작성했다. 참고로 UI는 Compose로 .. 2023. 7. 27.