본문 바로가기

안드로이드

(80)
[안드로이드] ConstraintLayout + CollapsingToolbarLayout 활용해 접히는 TabBar 구현하기 뱅크샐러드 및 야놀자 등 상단 탭영역이 접히는 UI/UX를 프로젝트에 적용하고자 했다. 구현을 위해 고르게 된 layout은 CollapsingToolbarLayout으로, 이름은 Toolbar로 딸려있지만 컴포넌트들을 추가해 툴바 이상의 요소들을 보여줄 수 있는 걸 확인할 수 있었다. 처음에는 레이아웃 코드 적용 후에도 동작이 되지 않거나, 스와이프 중 뷰가 제대로 접히지 않고 따로 논다던지 등의 이슈가 있었는데, 이하 문제들을 해결하면서 적용한 요소들을 정리를 해두고자 한다. 이번 구현에 있어 공식문서 외에 실구현 사례들을 레퍼런스로 삼아 차이점이 존재할 수 있으니, material.io에 나와있는 공식문서를 참조하는 것도 좋을 것 같다. Collapsing Toolbars - Material Com..
[안드로이드] MVVM 아키텍처로 간단한 계산기 만들기 MVVM을 초기단계부터 파서 좀 익숙해지고자 하는 마음에 계산기를 떠올렸고, 이를 MVVM 아키텍처를 이용해 구현하고자 했다. 사실 MVVM의 강점을 살린다기보단 MVVM의 형태와 Databinding을 활용해 로직을 짤 때 어떠한 방식으로 활용이 가능한지 알아볼 수 있는 과제였던듯. 간단한 순서 1. app 레벨 gradle에 Databinding 활성화 - kotlin-kapt plugin설정이 들어가있지 않다면 최상단 부분에 apply plugin: 'kotlin-kapt' 를 추가해주어야 함. android { ... dataBinding { enabled = true } ... } 2. 메인 레이아웃의 databinding 설정 ... 3. ViewModel의 설정 - 양방향 바인딩을 적용할 O..
[안드로이드 | Jetpack] 안드로이드 Navigation 구현하기 Jetpack 컴포넌트 중 가장 궁금하다 싶던 요소였던 Navigation을 간단히 구현을 해 보았다. 항상 그랬듯이 단계부터 우선적으로 나열해보고, 차례대로 정리를 해 보겠다. 구현하고자 한 바는 정말 간단하게 Navigation 컴포넌트를 추가하고, Splash 화면에서 메인 화면으로 넘어갈 수 있게 만드는 것이었다. 우선 Jepack 네비게이션의 취지가 무엇이냐함은 아래 영상을 참조하는 것이 좋겠다. 단순하게 이해하기로 Navigation의 취지라 하면 기존 여러개의 액티비티로 이루어져 intent등을 통해 데이터를 주고받거나, 액티비티간의 이동간 생명주기를 신경써야하던 부분이 있었는데 이를 단일 액티비티 + ViewModel 구조를 통해서 화면전환 및 데이터 송수신 문제를 해결할 수 있는, 앱의 ..
[안드로이드 | 코틀린] 코틀린으로 Queue 사용해보기 프로젝트에서 요구사항 구현을 위해 코틀린의 Queue 클래스를 활용해보기로 했다. Queue는 기본 java.util 패키지 내에 포함되어 있으며, Queue를 사용하면 IDE가 java.util.* import를 새롭게 추가하는 것을 확인할 수 있을 것이다. 그럼 Queue를 쓸 때에 사용 가능한 function을 살펴보자. - add(element: E) Any type의 element를 Queue에 추가한다. Any는 코틀린의 모든 클래스의 최상단 super 클래스로, 결국 어떤 클래스든지 문제없이 사용이 가능하다는 것이다. Queue에 element를 더하는데 성공하면 true를 return하며, 실패시 IllegalStateException을 발생시킨다. - element() element()는..
[안드로이드 | JSON] Json 파일 Parsing해 List로 만들기 프로젝트 리소스에 포함된 Json 파일을 불러와 List로 만들 일이 생겼다. 이 과정을 위해 해준 일들을 우선 나열해보면 4단계 정도가 있다. 1. 프로젝트에 Assets 폴더를 만들고 불러오고자 하는 json 파일을 집어넣는다. 2. GSON 라이브러리 및 Room Database import 3. Json 파일로부터 만들고자 하는 Data class를 정의 (3-1) 필요한 경우에 따라 TypeConverter 추가 정의 4. Json 파일을 String 객체로 Parsing > Gson 사용해 List 뽑아내기 Json Parsing을 위해 Gson과 AAC의 Room을 사용했다. 그러면 1번부터 쭉 밟아보자. 1. 프로젝트에 Assets 폴더를 만들고 불러오고자 하는 json 파일을 집어넣는다...
[안드로이드 | Flutter] 안드로이드 스튜디오가 dart 파일을 읽지 못할 때 Flutter 개발을 진행하면서 간헐적으로 .dart 파일이 말대로 하얗게 질려서 실행 불가능한 파일이 되는 문제가 있었다. 뭐라고 검색해야될지 갈피가 잘 안잡힐 때 우연히 우클릭으로 이를 해결하는 방법을 찾을 수 있었다. 문제는 dart 파일이 안드로이드 스튜디오에서 Plain Text로 마킹되어 있었고, 이는 해당 파일을 우클릭해 Mark as Dart를 해주면 본래대로 실행이 가능해지는 것이었다. 물론 반대로 Plain Text로 마킹도 가능하다. (어떤 필요에 있어서 있는 옵션인지는 잘 모르겠다.)
[안드로이드 | Flutter] 빌드 오류 : Could not build the application for the simulator. Error launching application on iPhone 11 Pro Max. 플러터 테스트를 열심히 하던 도중에 Toast 메시지를 보여주는 Widget을 추가한 뒤로 아이폰 시뮬레이터에서 빌드가 실패하면서 설치가 되지 않는 이슈가 있었다. 이를 해결하기 위해 처음에는 안드로이드 스튜디오 > Tools >Flutter > Flutter clean 을 써봤으나 소용이 없었고, 보다 상단에 나왔던 오류메시지에 명시된 대로 맥 터미널에 sudo gem install cocoapods 를 입력해 넣었다. 그러면 Ruby를 이용해 빌드에 필요로 하는 CocoaPods 설치를 진행하며, 설치가 끝난 이후로는 오류없이 빌드가 잘 되는 것을 확인할 수 있었다. (매우 간단한 이슈였음)
[안드로이드 | Flutter] Android Studio에서 첫 Flutter 프로젝트 시작하기 마음만 먹고 차일피일 못잡던 Flutter를 일단 시작을 해보기로 했다. 별도로 플러그인을 받는등의 시도를 하다가 후에 Android Studio에서 대부분의 절차를 마칠 수 있음을 알았다. 이번 설치는 안드로이드 스튜디오 3.5.1 버전에서 진행하였다. 1. Android Studio의 Configure > Plugins로 이동한다. 2. Marketplace에 Flutter를 검색해 설치한다. 3. Flutter 설치를 마치면 안내메시지에 따라 Android Studio를 재시작한다. 4. 다시 켜진 Android Studio 첫화면에 못보던 메뉴가 새로 생긴 것을 확인할 수 있다. 5. Start a new Flutter project를 클릭해 신규 Flutter 프로젝트 생성을 시작한다. 6. 프..