[Jetpack Compose] Bottom Navbar를 통해 배우는 Compose Navigation Navigating을 통한 페이지 탐색은 웹의 SPA는 물론이고 앱에서도 굉장히 중요하다. 안드로이드, 그리고 Jetpack Compose에서도 이는 굉장히 중요하고 그에 따라 지원하는 라이브러리도 존재한다. Navigation은 UI 상 우리가 흔히 봐온 Navbar가 아니더라도 라우팅을 통한 페이지 이동을 처리하는 자체가 Navigation이라 할 수 있다. (페이지 탐색, 뒤로가기 등등) 진행중인 프로젝트에선 위의 이미지와 같이 Bottom Navbar를 통해 페이지 전환을 수행하도록 하였고, 이번 포스팅에선 해당 Navbar의 구현과정을 통해 Jetpack Compose의 Navigation API들에 가까워지는 시간을 가지면 좋을 것 같다. Compose Navigation을 이루는 구성요소 d.. 더보기 [Jetpack Compose] Image Dialog로 슬라이더를 구현해보자. 지난 포스팅들에 이어, 갤러리 앱을 만드는 과정을 계속 진행해보자. 이미지 리스트의 masonry layout 구현을 목표로 하였고, Jetpack Compose의 LazyStaggeredGrid와 Coil 라이브러리를 사용하여 이를 나타내볼 수 있었다. Home 화면의 레이아웃은 대강 짜여졌고, 이제 추가적 기능을 구현해볼 차례이다. 화면의 이미지 리스트 중 특정 이미지를 클릭했을때 해당 이미지가 Dialog로 보여지고, 동시에 arrow button을 사용해 리스트의 전 후 이미지들 또한 탐색할 수 있으면 좋을 것 같다. 이를 어떻게 구현해 볼 수 있는지 알아보자. ImageDialog Popup 기존의 Home 화면 구성 파일에 이미지 dialog 구현을 위한 컴포저블 함수를 생성해보자. Jetpa.. 더보기 Android 개발과 가까워질 수 있는 곳은? 여러분은 새로운 언어나 프레임워크 혹은 특정 기술을 접할때 어떻게 시작하시나요? 만약 다른 언어나 프레임워크를 접해본 경험이 있다면 조금은 수월할 것이고, 소프트웨어 프로그래밍 자체가 처음이라면 입문하는 과정은 어느정도 어려움과 어색함이 존재하기 마련입니다. Android도 마찬가지입니다. Android는 단순 언어나 프레임워크가 아닌 하나의 "운영체제" 입니다. 현재 안드로이드의 주력이 되는 언어인 "Kotlin"의 문법과 개념을 숙지하는 것이 가장 중요하겠지만 이것을 넘어 디바이스 종속적인 여러 이슈, 앱 내 라이프사이클 관리 등 여러 구성 요소에 대한 이해가 필요합니다. 2021년 8월 1.0.0 stable 버전으로 정식 출시 되어 공식적 프로덕션 레벨에서 사용 가능하게 된 "Jetpack Com.. 더보기 [Jetpack Compose] Preview와 ViewModel의 충돌 https://nemoo-dev.tistory.com/entry/Jetpack-Compose-masonry-Layout%EC%9D%84-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EC%9E%90feat-LazyStaggeredGrid [Jetpack Compose] masonry Layout을 만들어보자(feat. LazyStaggeredGrid) 간간히 위와 같은 레이아웃의 형태를 많이 접할 수 있다. Android에선 "Lazy Staggered Grid", 혹은 "Asymmetic Grid" 등의 키워드로 접할 수 있는 위와 같은 레이아웃의 정식 명칭은 "Masonry Layout" 이라 한다. nemoo-dev.tistory.com 지난 글에서 Coil(image Picke.. 더보기 [Jetpack Compose] masonry Layout을 만들어보자(feat. LazyStaggeredGrid) 간간히 위와 같은 레이아웃의 형태를 많이 접할 수 있다. Android에선 "Lazy Staggered Grid", 혹은 "Asymmetic Grid" 등의 키워드로 접할 수 있는 위와 같은 레이아웃의 정식 명칭은 "Masonry Layout" 이라 한다. 단조로운 그리드 배치가 아닌 정형화 된 틀을 깨고 랜덤한 이미지의 배치 혹은 높이, 너비의 조절로써 위와 같은 미적으로 재미있는 레이아웃을 만들 수 있게 된다. 간단한 갤러리 앱을 구현하는 나의 첫 Jetpack Compose 미니 프로젝트에도 masonry layout을 적용해보고자 하였다. 그냥 샘플 이미지를 res/drawable 디렉토리 아래에 여러개 넣어준 뒤 해당 이미지 리스트를 바로 그리드화(lazy-staggered-grid) 시키는 작.. 더보기 [Kotlin] 아주 당연하지만 혼동할 수 있는... let과 null checking (작성자인 저와 같은) kotlin 입문자라면 가장 먼저 마주치게 될 키워드가 바로 "Null Safety"이지 않을까 싶다. 코틀린에선 자바를 포함한 다른 프로그래밍 언어에서 갖고 있는 "NPE(NullPointerException)"를 제거하기 위해 Nullable과 Non-Null 타입으로 프로퍼티를 선언할 수 있게끔 하였다. (그렇다고 완벽하게 모든 case에서 NPE가 제거되는 것은 아니다 _ 해당 케이스는 나중에 따로 알아보자) 그리고 아마도 여러 문서 및 블로그에서 null값을 조작하는 방법으로 let을 사용하는 케이스를 본 적이 있을 것이다. 더하여 let과 Elvis operator(엘비스 연산자)를 함께 사용하는 경우까지 보았을 것이다. 아래와 같이 말이다. + with Elvis Op.. 더보기 [Kotlin] Sequence와 Lazy evaluation 어쩌다보니 내 첫 코틀린 게시물이 되는 것 같다. 파이썬, c++등의 언어를 접해본 적은 있지만 스스로의 의지로 메인스택(Javascript, Typescript)이 아닌 "언어"에 대해 학습해보는 시간은 생각보다 흥미로웠다. 첫 포스팅은 어떤 내용을 다루면 좋을까 생각해보았다. 사실 첫 글은 코틀린 언어 자체에 대해 느껴보는 글을 적고자 하였지만 이를 느끼는 시간이 생각보다 조금 걸릴지 모르겠단 생각을 하였다. (추후 해당 경험및 생각을 포스팅 해보도록 하겠습니다) 그렇게 고민끝에 선택한 첫 글은 지루한 언어의 개념적 내용이 되었지만 생각보다 흥미있게 공부한 부분인 만큼 포스팅 해 볼 가치가 있다 생각하였다. 바로 코틀린의 "Sequence"이다. 마치 자바의 Stream이 연상되는 코틀린의 Seque.. 더보기 환영합니다! #1 글을 작성하고 블로그를 관리해보세요. 님의 회원 가입을 진심으로 축하합니다. 이 글은 비공개로 작성돼 있습니다. '편집'으로 내용을 바꾸시거나, 삭제 후 '새 글을 작성'하셔도 됩니다. 글 뿐만 아니라 블로그의 각종 설정을 변경할 수도 있습니다. '블로그관리'를 확인해보세요. #2 다양한 스킨이 있어요. 티스토리에 있는 다양한 '스킨'도 살펴 보세요. 블로그나 사이트를 사용하는 목적에 맞게 스킨을 고를 수 있습니다. 어떤 이야기를 주로 하실 건가요? 잘 생각해 보시고, 마음에 드는 스킨을 고르세요. '스킨 편집'을 통해 다양한 커스텀, 그리고 홈 꾸미기를 적용하실 수도 있답니다. #3 포럼에서 사람들과 소통하세요. 마지막으로 사용하시다가 티스토리에 대해 궁금한 내용이 있다면 '포럼'을 확인하세요. .. 더보기 이전 1 다음