본문 바로가기

분류 전체보기135

[Kotlin] 배열과 Map에 대해 알아보기 요즘 필자는 알고리즘 문제를 풀고 있다. 알고리즘 문제를 풀다 보면 배열은 거의 대부분의 문제에서 사용하는 것 같고, HashMap도 종종 사용하는 것 같았다. 그래서 이번에 코틀린의 배열과 HashMap의 차이에 대해 간단히 설명해보고자 한다. 앞으로 이런 간단한 알고리즘 개념에 대한 포스팅이 올라올 것 같다. 1. 배열(Array) 배열은 코틀린을 공부하지 않은 사람이라도 프로그래밍 언어를 하나라도 공부해 본 경험이 있으면 바로 알 수 있을 것이다. 바로 데이터의 집합을 배열이라고 하는데 자바의 배열 선언과는 달리 코틀린의 배열은 상당히 편리하면서도 복잡(?)하다.(필자 기준) 필자가 왜 복잡하게 느꼈냐면, 코드로 설명해 주겠다. 자바의 경우에는 다음과 같이 배열을 만들 수 있다. int[] intA.. 2023. 10. 27.
[Android, Kotlin] Compose에서 동적 List 만들기 (7) 이번 포스팅에서는 Planner v2의 일정 생성 화면을 구현하면서 알게 되었던 지식들을 풀어볼까 한다. 마지막으로 ui를 구현할 화면은 일정 생성 화면이다. 일정 생성 화면은 plan screen의 점선으로 된 추가하기 card처럼 아무것도 없는 화면에 그 card를 눌러서 일정을 생성하고 일정 card를 클릭해서 일정을 수정할 수 있게 구현해 보겠다. 간단하게 UI를 구상해 보았다. text 부분에 일정 생성이라는 타이틀을 넣고 처음에는 아무것도 없는 화면에 점선으로 된 + card를 누르면 일정이 생성되고 일정을 클릭하면 일정의 정보를 수정할 수 있도록 구현하겠다. 1. 일정 Card 구현 우선은 일정 추가 card부터 만들어 보자. card의 border를 점선으로 설정하는 방법은 이전 포스팅에서.. 2023. 10. 24.
[Android, Kotlin] Compose Lazycolumn의 scroll state 관리하기 (6) 이번에 Planner v2를 개발하면서 Plan(main) screen에서의 add schedule icon이 너무 사용자들에게 불편할 수도 있다는 느낌을 받았었다. 일정 header 부분에 + icon은 사용자들이 실제로 사용한다면 icon의 크기가 작아서 클릭이 힘들어 보일 것 같았다.(크기를 키우기에는 header 크기도 같이 커지기에 애매했다.) 그래서 기존의 icon을 LazyColumn의 맨 아래에 card로 만들어서 생성할 수 있도록 만들기로 했다. 그렇게 만들면 일정을 많이 생성하는 사용자들이 스크롤을 한참 해야 맨 아래로 도달해서 불편할 것 같았기에 따로 맨 아래, 맨 위로 스크롤 해주는 작은 button도 만들어 보기로 했다. 1. 자동 Scroll Button 만들기 button의 u.. 2023. 10. 21.
[Android, Kotlin] Compose Vico 라이브러리로 ComposedChart 만들기 (5) 지난 포스팅에서 Compose Chart 라이브러리인 Vico 사용법과 Vico로 Column Chart 만드는 것까지 해보았다. 이번 포스팅에서는 지난 포스팅에서 언급했다시피, Vico에서 Composed Chart(혼합 차트)를 만들어 보도록 하겠다. 1. Composed Chart 만들기 Composed Chart는 혼합 차트를 뜻하는데, line chart와 column chart를 혼합해서 사용할 수 있다. 실제로 Vico wiki에서도 두 차트를 동시에 사용한 예제가 있었다. 하지만 필자는 Column Chart를 두 개를 이용해서 데이터를 표시하고 싶었기에, column 차트 2개를 사용했다. Vico 라이브러리에 대한 설명과 Column Chart 구현에 관한 자세한 설명이 필요하면 이전 .. 2023. 10. 20.
[Android, Kotlin] Chart를 Compose로 구현하기 (4) 이전 포스팅에서는 compose에서 calendar를 만들어서 Plan Screen의 UI를 구현해 보았다. 이번 포스팅에서는 필자가 compose로 chart를 만들면서 생겼던 일을 설명해 줄까 한다. 3일 동안의 공백 기한 중 2일을 차트 구현에 썼다 >:( UI 설계는 어떻게 하였는가? 기존의 UI 설계는 차트가 있다는 것까지는 같지만 차트 위쪽에 dropdown menu를 만들어서 dropdown menu에 따라 chart의 형태(주간 통계 차트, 이번 주 통계 차트)가 변하게 만들려고 했다. 그림과는 다르게 현실에서는 아래의 공간이 많이 남았었다.(텍스트까지 만들었는데도) 그래서 UI를 약간 수정해서 주간 차트와 이번 주 차트를 스크롤해서 볼 수 있도록 구현하기로 했다. 그러면 UI 설계(?)를.. 2023. 10. 19.
[Android, Kotlin] Compose에서 Calendar 사용하기, LazyColumn Data 구성하기 (3) 이전 포스팅에서는 Compose에서 Bottom navigation bar를 만드는 것으로 마무리 지었는데 이번 포스팅에서는 필자가 Plan Screen의 UI를 만들면서 있었던 일에 대해 설명해 보겠다. UI 설계는 어떻게 하였는가? UI 설계는 기존 Planner의 UI를 참고해서 만들었다. 위에는 달력을 달고 아래에는 선택된 날짜의 일정들을 보여주는 방식으로 구현해 보겠다. 1. 달력 만들기 UI를 구성하려면 먼저 달력을 만들어야 한다. 필자가 Compose에서 제공하는 달력이 있나 찾아보았지만 아직은 관련 달력 라이브러리가 제공되지는 않는 듯했다. 그런데 사용할 만한 라이브러리는 찾을 수 있었다. https://github.com/kizitonwose/Calendar GitHub - kiziton.. 2023. 10. 16.
[Android, Kotlin] Compose Material3 Bottom Navigation의 Indicator 효과를 제거하기 (2) 죽은 프로젝트 살리기 2탄 이슈 해결기 지난 죽은 프로젝트 살리기 1탄에서는 v2 계획 후 데이터베이스 설계까지 완료하였다. 그래서 필자는 지난 포스팅을 올리고 난 뒤로 바로 Planner v2 개발을 시작하였다. 필자의 머릿속에는 bottom navigation을 활용해서 화면 2개를 메인으로(달력이 있는 화면, 통계 화면) navigation bar를 구성하는 작업을 하는 중 다음과 같은 UI적 불편함(?)이 있었다. 사진을 보면 클릭이 된 부분에 파랗게(?) 둥근 effect가 발생하고 있는 것을 볼 수 있다. 필자 기억으로는 material3에서 제공하는 기본적인 indicator라고 알고 있는데, 필자의 경우에는 저 effect를 삭제하고 싶었다. 저 effect를 indicator라고 한다. .. 2023. 10. 14.
[Android] 안드로이드 프로젝트의 Sha Key를 알아내는 방법 이번 포스팅에서는 안드로이드 프로젝트에서 sha-1 키를 알아내는 방법을 알아볼까 한다. 이 글을 보시는 분들은 sha-1 key를 보는 게 급할 것이라고 생각해 바로 방법을 알려주도록 하겠다. 1. sha 키 발급받기 안드로이드 스튜디오 오른쪽 부분을 보면, gradle을 포함해 다양한 탭을 열 수 있는 부분이 있다. 여기에서 gradle을 클릭해서 들어간다. 그러면 다음과 같이 화면이 나올 것이다. 이 화면이 정상적으로 떴으면, Execute Gradle Task라는 아래의 icon들 중 가장 왼쪽에 있는 icon을 클릭해 준다. 그러면 다음과 같은 화면이 나온다. 위의 입력하는 곳에 signingReport를 입력하고 엔터를 누르면 sha-1 key랑 sha-256 key를 발급받을 수 있다. 이제.. 2023. 10. 12.
[Android, Kotlin] 죽은 프로젝트 살리기 위한 v2 계획 (1) 이번부터 필자의 기존에 개발을 완료했거나 개발 중단된 프로젝트를 살리는 개발 기록을 일기처럼 남겨볼까 한다. 이 시리즈를 작성하면서 내가 경험했던 죽은 프로젝트를 살려가는 과정을 글로 담아볼 예정이다. 첫 번째 프로젝트는 1년 전에 개발을 완료하고 버려진(?) Planner를 살려보는 프로젝트를 진행해 볼 것이다. 저의 개발 썰(?)로만 가득한 글입니다 ^^ 1. Planner란 무엇인가? 예전에 필자가 기획한 Planner는 당시 필자가 점점 게을러지기도 했고 이번에 프로젝트를 내가 사용할 수 있는 앱을 만들어보자! 해서 번뜩인 아이디어로 구상을 시작한 프로젝트이다. 이름에서도 알 수 있듯이 일정 관리 앱이다. 당시 필자는 다른 Planner 앱들과 차별성을 주기 위해 하루 일정을 기록하는 것을 넘어서.. 2023. 10. 10.
[Android, Kotlin] Compose에서 glance를 이용해 위젯 만들기 이번에 공부한 내용은 compose로 위젯을 만드는 라이브러리인 glance이다. glance의 존재(?)는 이전에 들으러 갔던 컨퍼런스 강연에서 glance에 관련된 강연을 들게 되었는데, 그때부터 기회가 되면 공부해 보자 라는 생각을 하게 되었다. 그게 지금이다. glance는 compose에서 위젯을 쉽게 만들 수 있게 해주는 라이브러리이고 2023년 8~9월에 1.0.0을 출시한 따끈따끈한 신상(?) 라이브러리이다. 아무튼 그래서 이번에 compose glance를 공부한 내용을 블로그에 정리해보려 한다. 그럼 바로 glance 사용법을 알아보자. 1. 라이브러리 추가하기 먼저 glance 라이브러리를 추가해 준다. // glance implementation("androidx.glance:gla.. 2023. 10. 6.
[Android, Kotlin] android에서 Junit으로 테스트 코드 작성하기 이번에 정리할 내용은 테스트 코드이다. 다들 테스트 코드라는 말을 들어본 적은 있어도 사용법을 몰라서 사용하지 않았던 경우도 있었을 것이고, 장점에 대해서는 들었지만 확 와닿지 않았기 때문에 사용하지 않았을 수도 있을 것이다. 필자의 경우에는 2가지 모두 해당사항이었다 ㅎㅎ 하지만 이번에 친구들이랑 하는 대형 프로젝트에서 파트별 개발을 하던 중 내가 코드를 잘 작성하고 있는 걸까?라는 의문이 들어 테스트 코드에 대해 공부하고 이번 기회에 포스팅으로 남겨볼까 한다. 그러면 바로 테스트 코드에 대해 간단히 알아보고 코드 예제로 같이 확인해 보도록 하자. 1. 테스트 코드를 작성하는 이유? 테스트 코드는 안드로이드 앱을 개발하면서 특정 로직을 테스트하면서 기능의 문제나 오류를 찾아내 주는 코드를 뜻한다. 테스.. 2023. 9. 28.
[Android, Kotlin] 안드로이드에서 line chart 만들기 이번에 공부한 내용은 android studio에서 차트(그래프)를 그리는 방법에 대해 공부해 보았다. 이번 포스팅에 차트 만들기에 대해 공부했던 내용을 정리해보려 한다. 사실 작년에도 차트를 사용했던 경험이 있었지만, 이번에 다시 사용해야 하는 경우가 생겼기에 이번 기회에 정리해 보려 한다.(작년에 공부했던 내용을 거의 다 까먹어서 처음부터 다시 공부했었다 >:( ) 차트를 만드는 방법은 다양하지만 기본적으로는 다른 분들이 만들어준 차트 라이브러리를 사용하는 것이 가장 편할 것이다. 그냥 android chart library라고 검색해도 다른 분들이 이미 만들고 사용 중인 라이브러리가 다수 존재한다. 아니면 자신이 직접 custom 해서 만들고 싶으면 android에서 제공하는 canvas를 이용해 .. 2023. 9. 28.
[Android, Kotlin] jetpack navigation에서 safe args로 데이터 전달하기 최근 포스팅에서 compose에서 jetpack navigation을 이용할 때, data class type의 데이터를 넘기는 방법을 알아봤었다. 저 기술을 최근에 xml에서 한 번 더 사용할 일이 있었는데, 이름이 safe args라는 것을 알게 되었다. 아마 compose에서 사용한 기술도 safe args로 불리는 듯한다. https://rkdrkd-history.tistory.com/57 [Android, Kotlin] compose navigation에서 data class tpye 넘기기 compose에서 navigation을 사용할 때, 화면 전환 시 변환될 화면에 기존의 화면의 데이터를 이용하고 싶은 경우가 있을 것이다. 그럴 때에는 Navcontroller.navigate()에다가 넘길.. 2023. 9. 26.
[Android, Kotlin] android에서 in-app updates로 앱 업데이트 관리하기 이번에 정리할 주제는 바로 앱 업데이트에 관한 사항이다. 내가 이번에 앱 업데이트에 관해 정리를 한 이유는 필자가 앱을 하나 출시하였는데 그것을 사용하는데 사용자들이 앱 업데이트를 하지 않고 사용하는 경우를 많이 보았기 때문이다. 0. 왜 사용해야 할까? 이런 경우 앱 업데이트를 하지 않아도 상관없다는 이야기도 할 수 있다. 하지만 업데이트를 하지 않으면 새 버전을 출시하면서 수정했던 오류를 업데이트를 하지 않은 기존 앱에서는 그대로 오류가 남아있을 확률이 높다. 그래서 이번 기회에 구글에서 제공하는 라이브러리인 in-app updates를 이용해서 사용했던 경험을 기록으로 남겨보도록 하겠다. 1. in-app updates는 무엇일까? in-app updates는 구글에서 제공하고 있는 사용자가 앱 내.. 2023. 9. 9.
[Android, Kotlin] exoplayer와 media3를 이용해 영상 재생하기 이번에는 필자가 자주 시청하는 youtube를 보고 youtube가 exoplayer를 이용해 제작되었다는 말을 들었기 때문에 이번 기회에 exoplayer를 공부해 보기로 했다. 이번의 exoplayer 예제는 프로젝트 안의 mp4 파일을 불러오는 과정을 담았다. 참고로 현재 자주 사용하는 compose를 이용해 구현해 보겠다. exoplayer란 무엇일까? exoplayer는 android에서 사용 가능한 미디어 재생 라이브러리이다. 1. dependency 추가 exoplayer와 media3을 사용하기 위해 dependency를 추가한다. // exoplayer compose implementation("com.google.android.exoplayer:exoplayer:2.19.1") impl.. 2023. 8. 25.
728x90