728x90
반응형

Android 89

최종 팀플 개발 1일차

다른 거 말고 트러블슈팅이나 고민들만 적어놓으려고 한다. 어제가 1일차인데 오늘 쓰는 이유는 어제 마무리를 하고나니 새벽 2시였기 때문이고 와이어프레임을 너무 봐서 개발했던 내용들이 잘 생각나지 않았기 때문이다... 1. 다이얼로그 프래그먼트의 둥근 모서리 나는 다른 뷰객체에 둥근 모서리를 주듯이 하면 되겠지 하고 xml 파일에서 모서리를 둥글게 하고 가장 상위 레이아웃 background에 넣어준 다음 clipToOutline을 true로 주고 앱을 실행시켰는데 적용이 되지 않았다. 도대체 왜 이러는 건지 몰라서 여러가지 방법을 적용하며 체크해봤다. 그 중에 알게된 거는 가장 상위 레이아웃 뒤에 흰색 배경이 존재한다는 거였다. 그걸 없애야지만 적용이 안 되어있는 것처럼 보이는 현상을 해결할 수 있는 상..

Android/StoreInfo 2024.02.23

<오픈소스> View Shake 효과

https://github.com/gayanvoice/android-animations-kotlin 위의 링크에서 Shake 효과를 써봤는데 무슨 일인지 Ruberband 효과와 동일하더라 그래도 나는 Shake를 쓰고 싶고 해당 코드를 자세히 보니까 아주 쉽게 되어있어서 약간 변형하여 Shake효과를 구현했다. 또한 이 효과를 구동시킬 클래스를...!! 잘 가져와서 같이 쓰기 쉽다.ㅎㅎ * Shake 효과 fun Shake(view: View): AnimatorSet { val animatorSet = AnimatorSet() val object1: ObjectAnimator = ObjectAnimator.ofFloat(view, "translationX", 0f, 30f, -30f, 20f, -20f..

Android/StoreInfo 2024.02.02

Unexpected tokens (use ';' to separate expressions on the same line)

깃허브에 올라와있는 여러 라이브러리를 써보려고 드디어 오늘 첫발자국을 떼려고 했는데 마주한 첫번째 에러였다. build.gradle에 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 를 추가하라는데 저런 공간이 있지 않았다. 그리고 그냥 붙이면 url 옆에 작은따옴표로 묶여있는 부분이 제목에 써있는 에러가 뜬다... 내가 kts 확장자라서 그런가 했지만 그럼 이거 쓰는 사람들은 다 못 쓰고 있다는 게 말이 안 되기 때문에 방법을 찾기 시작했다. 이건 열심히 서칭해서 방법을 찾았는데 그건 바로 settings.gradle.kts에 있는 dependencyResolutionManagement 안에 repository 안에 넣으면..

Android/Errors 2024.02.02

<정리> 챌린지반 과제2 - 5

저번에 그 아찔한 복습시간을 마치고 오늘은 진짜로 해야하는 과제 내용을 진행했다. 아주 짧은 내용이었지만 이를 구현하기 위해서 걸린 시간은 장난 없었다. 그리고 완성했다고 생각하고 튜터님께 갔다가 다시 갈아엎는 일도 있어서 오후 시간이 참 빨리가더라 1. SharedViewModel 처음에 나는 '한 뷰모델을 그냥 두 페이지에서 같이 쓰면서 모든 기능을 한번에 처리하면 되지 않을까?' 생각이 들었기 때문에 프래그먼트 별로 뷰모델을 만들지 않고 하나의 뷰모델을 공유하도록 짰었다. 그렇게 하다보니 따로 아이템 클래스를 만들지 않고 하나로, 따로 이벤트 클래스를 만들지 않고 하나로 구성해서 분기를 시키느라 한 뷰모델 내의 코드가 엄청나게 길어졌다. 그렇게 쭉- 달려서 과제 기능이 동작하는 것까지 확인하고 피드..

Android/StoreInfo 2024.02.02

<정리> 챌린지반 과제2 - 4

제출하고 난 후의 수업을 듣는데 진짜 이게 왜 이렇게 되고, 왜 이렇게 하고, 왜 작동하는지 머리가 뒤죽박죽이 돼서 집중을 못 했다. 그 이후에 다시 복습을 하는데 천천히 가도 쉽지 않았다. 그래도 약간은 그 흐름이 이해가 됐다. 물론 '이렇게까지 해야하나?'라는 생각이 안 든 거는 아니지만 현업에 맞춰서 설명해주시는 걸 알기 때문에 최대한 마인드 세팅을 바꾸며 따라가려고 노력했다. 아마 이번 글에서는 복습했던 내용들만 들어갈 거 같다. 지난번에 만든 거를 튜터님의 스타일로 변경하는 것만 했는데 모르는 것들이 수두룩빽빽이었기 때문이다... 하나씩 하나씩 다시 살펴보자~~ 1. Sealed Interface sealed class는 이전 개인과제를 할 때 사용해봤지만 sealed interface는 또 처..

Android/StoreInfo 2024.02.01

<정리> 심화 개인과제 5

이제 오늘 지나면 제출일이다. 오늘 한 것은... 챌린지반 복습하느라 그렇게 많지 않다. 보완과 약간의 기능 추가 정도? 1. 뷰모델로 옮긴 함수 이전에 검색 결과 페이지에 있던 데이터 요청 함수를 뷰모델로 옮겼다. 이로인해 뷰모델로 현재 EditText의 텍스트값만 넘겨주면 됐고 업데이트는 옵저버를 통해 할 수 있게 되었다. 아래는 첫번째로 검색할 때에 대한 내용이고 스크롤을 최하단으로 내렸을 때 데이터를 받아오는 것도 아래 코드처럼 작성했다. btnSearch.setOnClickListener { viewModel.processFirstSearch(etSearch.text.toString()) goToFirstState() } =========================================..

Android/StoreInfo 2024.01.31

<정리> 심화 개인과제 4

오늘은 좀 여유있게 진행할 수 있었다. 구현할 게 얼마 남지 않기도 했고 시간도 아직 여유가 좀 있었기 때문이다. 그래서 거의 마무리라고 생각되는 정도까지 도착해서 이른 오후에 정리해놓으려고 한다. 이제 여기서 더 한다면 어떤 기능들을 넣어야할지 생각을 내가 스스로 하고 넣어야하는 것이기 때문에 쉽지 않다... 하라는걸 하는데에는 크게 어려움을 느끼지 않는 경우가 많은데 처음부터 알아서 하라고 하면 좀 어려움을 느끼는 경우가 많다. 1. 뷰모델 팩토리 사용 이걸 사용하게 된 계기는 SharedPreferences다. 저번 글에서도 말했지만 나는 이걸 뷰모델 안에서 호출하고 싶었다. 하지만 SharedPreferences를 만들 때는 Context가 필요했고 뷰모델에는 존재하지 않았다. 그래서 이리저리 방..

Android/StoreInfo 2024.01.30

<정리> 심화 개인과제 3

저번주 금요일에 진행상황을 정리했어야 했지만 거의 자정까지 이어진 개발로 인해 오늘에 몰아서 작성한다. 다행히 금요일날 물고 늘어진 건 잘 해결이 됐고 오늘은 그 이후 딱 한가지 무한 스크롤 전까지 해결을 하며 B타입의 마무리가 보이고 있다. 물론 MVVM 패턴을 완벽하게 적용하지 못해서 이 부분은 튜터님께 물어보러 가야겠지만... 중간중간 정리하면서 했으면 차례대로 적을 수 있겠지만 몰아서 하는 것이기 때문에 실제 진행했던 순서와는 많이 다를 예정이다. 1. isSelected 변수 추가 이건 이전에 선택한 데이터들을 모아두는 리스트를 메인 액티비티에서 구성하는거 말고 다르게 하기 위해 선택한 방법이다. 데이터 클래스에 이 isSelected 변수를 추가했다. 이걸 넣는거 때문에 API 사용해서 데이터..

Android/StoreInfo 2024.01.29

<정리> 심화 개인과제 2

어제 API 사용하는 걸 마무리지어나서 오늘은 과제 A타입의 조건들을 맞추는데 집중했다. A타입은 이제 마무리됐으니 내일부터는 B타입에 시간을 써봐야겠다. 1. 리사이클러뷰 리스트 날짜순으로 정렬 이건 다른 거 아니고 그냥 리스트에 데이터들을 다 받고 나서 sortByDescending을 사용했다. 좋아요 누른 데이터, 검색 결과 데이터 모두 동일하게 했다. items.sortByDescending { it.dateTime } favoriteItems.sortByDescending { it.dateTime } 2. 날짜 포맷 설정 생각보다 시간이 걸린 문제였다. 형태가 먼저 DateTime 형태로 들어오는데 DateTime은 아니고 String으로 들어오더라 분명 모양은 DateTime인데 실제로는 St..

Android/StoreInfo 2024.01.25

<정리> 챌린지반 과제2 - 3

아... 쉽지 않다 쉽지않아 어떻게 이렇게 짤 생각을 하셨는지 지금의 나는 영~ 모르겠다! 그래도 어떻게든 따라가려고는 하는데 마무리하고 나서 보니까 이게 또 짜던 대로 짠 거 같기도 한 느낌..? 많은 변화가 있었고 하나씩 되돌아보자 엔트리타입은 넘어가도 되겠죠...? [깃허브] https://github.com/heesoo-park/ChallengeRecruitAssignment/tree/week2_contain_ListAdapter 1. 대대적인 이름 변경 뭔가 읽으면서 직관적이지 않다고 생각이 들거나, 이름에 정보가 부족하다 싶은 부분들을 수정하고 보완했다. 클래스, 변수, 파일명 가리지 않고 많이 바뀌어서 이전 포스팅과 다른 이름이 자주 나올 것이다. 2. DataStore 삭제 & TodoLi..

Android/StoreInfo 2024.01.25
반응형