프로그래밍

    [kotlin] 데이터 클래스 활용법

    [kotlin] 데이터 클래스 활용법

    Data Class에서 내가 자주 사용하는 활용 1. Response를 받은 데이터들을 내가 사용할 Data로 가공하기 // Response 받을 데이터 클래스 data class DataResponse( val a: String, val b: String, val c: String, val d: Int, ) // DataResponse클래스를 MyData class로 변경하기 위한 함수 fun DataResponse.toMyData(): MyData { val dataList = listOf(a, b) return MyData( dataList = dataList, ) } // 내가 UI에서 사용할 데이터 data class MyData( val a: String, val b: String, ) 나는 ..

    [안드로이드] Compose Pager에서 swipe시 렉

    [안드로이드] Compose Pager에서 swipe시 렉

    안녕하세요. 이번 포스팅은 Compose Pager에서 Swipe할 때 렉이 걸리는 문제를 해결했던 과정을 작성하려고 합니다. 상황 버벅이는 문제 위의 영상에서 3~4초쯤 Swipe 시 버벅이는 문제가 발생해서 해결하기 위해 먼저 인터넷 검색을 했습니다. StackOverflow에서 제시한 해결법 1. Pager내에 Coil을 사용한 경우 렉이 있을 수도 있다. (링크) - Pager, LazyColumn에서 Coil을 사용할 경우 렉이 있다는 이슈가 있다고 한다. 하지만 나같은 경우에는 로컬에서 이미지를 불러오기 때문에 해당하지 않는다. 2. Pager내에서 LazyRow, LazyColumn을 사용한 경우 (링크) - 두개 동시에 사용한경우 렉이 걸리는 이슈가 있다고 한다. 하지만 해당하지 않아서 패..

    [안드로이드] 프리아 컬렉션 - 6

    [안드로이드] 프리아 컬렉션 - 6

    애니메이션 추가 Compose에서 애니메이션 추가는 생각보다 쉬웠다. 하지만 화면 전환 시 바로바로 되지 않는 점을 수정해야할 것 같다. 이미지 저장 폴더 Drawable 폴더와 mipmap 폴더 둘 다 이미지를 저장하는 폴더이다. 그런데 나는 어디에 저장해야할 지 잘 몰라서 검색을 통해 알아보니 아래와 같은 결과를 얻었다. mipmap -> 앱 외부 이미지(시스템) drawable -> 앱 내부 이미지 (앱 내부) 그래서 drawable은 앱 내부에서 사용할 이미지를 저장하고, mipmap은 앱 아이콘과 같은 이미지를 저장하면 될 것 같다. 목표 이 앱에서 이제 남은 기능은 아프리카티비 크롤링과 스플래시 이미지 그리고 화면 전환 시 버벅임을 개선하면 좋을 것 같다. 1. splash 화면 구현 2. 크..

    [안드로이드] 프리아 컬렉션 프로젝트 - 5

    [안드로이드] 프리아 컬렉션 프로젝트 - 5

    프로토타입 안녕하세요. 이번에 어느 정도 앱 메인 화면이 완성되어서 블로그 포스팅을 해봤습니다! 이 어플리케이션은 프리아라는 버츄얼 아이돌의 Youtube 최신 업로드 영상 및 AfreecaTV 최신 공지사항을 한 번에 모아보기 위해서 초기 계획했습니다. 그리고 개발 중 추가로 맴버들의 소소한 정보를 추가해서 유용하게 사용할 수 있도록 개발을 하고 있습니다. 화면 MBTI, 소속, 혈액형, 이름, 생일을 간략하게 소개하고, Youtube를 클릭 시 유튜브 리스트를 볼 수 있도록 만들었습니다. State 값 저장 State 값을 저장을 viewModel에서 했더니 홈 화면 갔다가 오니 저장이 안 되었다. 검색해서 찾아보니 saveableStateViewModel과 ViewModel에서 차이가 있었다. sa..

    [안드로이드] 프리아 컬렉션 프로젝트 - 4

    [안드로이드] 프리아 컬렉션 프로젝트 - 4

    Youtube Data Api v3 구글에서 유튜브 데이터를 API를 통해서 가져올 수 있었다. API 자체는 쉽게 들고올 수 있었지만 유튜브 채널 아이디를 찾는데 조금 오래 걸렸다. Youtube ChannelId 구하기 나의 Youtube 채널 아이디 구하는 법 1. Youtube - 설정 - 고급설정에서 아래와 같이 사진과 같이 채널 ID를 구할 수 있다. 그러나 내가 원하는 것은 다른 유튜버의 채널 ID를 찾는 것이였다. 그래서 찾아본 결과 아래와 같이 하면 구할 수 있다. 다른 유튜버 채널 ID 구하기 1. 해당 유튜버 메인 화면으로 간 뒤 개발자 도구를 킨다. 2. 네트워크 탭으로 이동한다. 3. 구독을 한 뒤 네트워크 부분에서 "subscribe?key=..." 를 클릭한다. 4. 페이로드 ..

    MPAndroidChart 너는 뭐니

    MPAndroidChart 너는 뭐니

    xml에서 chart는 없나? 에서 시작한 chart 찾기. android에서 제공하는 것은 없었고, 유명한 라이브러리가 있어서 소개할려고 한다. GitHub - PhilJay/MPAndroidChart: A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubb A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations. - GitHub - PhilJay/MPAndroi..

    [안드로이드] 프리아 컬렉션 프로젝트 - 3

    [안드로이드] 프리아 컬렉션 프로젝트 - 3

    BuildSrc? Build composite? 이전 게시물과 비슷하게 모듈화를 하기 위해 노력하고 있었다. 처음에는 BuildSrc를 사용했다. 그러나 모듈마다 plugin을 다시 설정하고, 라이브러리를 설정해주었다. 왼쪽 사진이 내가 처음 적용했던 build.gradle 오른쪽은 pluu님의 WebToon Repository이다. 먼저 큰 차이점은 libs를 이용해 라이브러리를 추가한다는 점이였다. 나는 먼저 libs를 알기 위해서 해당 자료를 검색했고 아래 주소에서 힌트를 얻었다. Sharing dependency versions between projects Gradle provides support for importing bill of materials (BOM) files, which are..

    [안드로이드] 프리아 컬렉션 프로젝트 - 2

    [안드로이드] 프리아 컬렉션 프로젝트 - 2

    모듈화를 위한 발버둥 이전 글을 쓴 이후 프로젝트를 진행하면서 Compose는 디자인을 개발하는 부분이어서 어느 정도 이해를 하면서 개발할 수 있었다. Compose를 이용해 프로토타입을 만든 후 나는 기능 추가를 위해 Pluu님, Skydoves님, TaeHwan님 등의 깃 허브에 들어가 여러 안드로이드 프로젝트를 구경했다. 내가 이때까지 했던 프로젝트와는 다른 방식으로 아키텍처를 설계를 하신 것 같았다. Github 프로젝트와 나의 프로젝트의 차이점 나는 Data, Domain, Presentation을 한 모듈에 넣고, package에서 분리를 했다. 하지만 깃 허브에 올라온 프로젝트들은 Data, Domain, present을 세부적으로 모듈화해서 분리를 했다. 생각을 해보니 회사 프로젝트에서 안..