728x90
반응형

Android 89

<정리> 메모 앱 만들기 9일차

오늘은 뭔가 많이 한 거 같은데 아직 해야할 게 많고 그것들이 대부분 쉽지 않다는 걸 알게 되었다... 지금까지가 가장 쉬운 부분이었고 이제 앞으로 할 것들이 쉽지 않아보여서 일단 오늘은 여기서 마무리하려고 한다. 오늘은 순서가 약간 뒤죽박죽이다. 이것저것 다 만지다보니 그렇게 됐고 그래서 구현한 것과 트러블 슈팅이 섞여있다. 1. 저장소 생성 object class로 저장소를 만들었다. ArrayList로 작성된 메모를 저장했고 관련 함수도 다 만들었다. 지금 만들지 않은 건 삭제 함수다. ID를 랜덤으로 부여하기 위한 함수도 존재한다. 이 ID로 메모를 식별하여 업데이트를 해준다. object MemoDatabase { private val database: ArrayList = arrayListOf..

Android/Kotlin 2024.01.11

<정리> 챌린지반 과제 4

'오늘은 건드릴 거 없을 테니 sealed class를 해볼까?' 했지만 튜터님께 한번 물어보고 가야지 싶어서 질문하고 왔는데 건드릴 게 또 생겼다. 그리고 생각해보고 발전시킬 것도 말해주셨다. 1. 회원가입 버튼 클릭 리스너 내부 코드 변경 이전에는 클릭 리스너 안에서 뷰모델 함수를 부르고 인텐트를 보냈었다. 그런데 인텐트를 보내는 것도 라이브 데이터의 옵저버 안에서 하라고 하셨다. 그래서 라이브 데이터도 변경하고 관련있던 함수도 변경하고 옵저버도 변경했다. 모든 에러 텍스트를 세팅할 때마다 값을 변경했던 SignUpUserEntity 타입의 라이브 데이터는 클릭 리스너로 함수가 호출됐을 때 넘어온 매개변수 값으로만 값을 업데이트하도록 변경했다. 관련함수는 EditText의 값을 넘겨 받아 위의 라이브..

Android/StoreInfo 2024.01.10

<정리> 메모 앱 만들기 8일차

드디어 메모장 어플의 핵심인 메모에 들어가는 날이었다. 물론 그 전에 여러가지 애니메이션 적용하는 것이 너무 내 머리를 아프게 해서 진도는 많이 못 나갔지만... 오늘 한 것들 중에 간단하게 말할 수 있는 건 LinearLayout이던 걸 ConstraintLayout으로 변경한 것, 레이아웃 xml 파일에 주석 추가한 것이 있다. 1. MemoAdapter 변경사항 기존에는 뷰홀더에서 리사이클러의 아이템뷰를 받는 방식이었는데 최근에 배운 방법으로 리사이클러뷰 아이템의 뷰바인딩 값을 받는 방식으로 바꿨다. inner class MemoViewHolder(private val binding: RecyclerViewItemLayoutBinding): RecyclerView.ViewHolder(binding...

Android/Kotlin 2024.01.10

<정리> 메모 앱 만들기 7일차

7일차라고 하지만 거의 20일만에 만진다... 그 사이에 팀플도 있고 과제들도 있고 연말연초고 해서 이 앱은 건드릴 일이 없었다. 그래서 오랜만에 보니까 많이 어색하고 '이걸 왜 이렇게 했지?' 하는 부분도 많고 다시 익숙해지는데 시간이 걸렸다. 아마 이번주에는 조금 만질 시간이 있을 거 같아서 좀 다듬고 드디어 메모장 기능을 만들어볼 수 있을 거 같은 느낌? 1. 뷰바인딩 적용 이전까지는 findViewById를 썼었는데 오랜만에 다시 시작하니까 싹다 뷰바인딩으로 바꿨다. 그 과정중에 레이아웃 xml 파일에 include 했던 것들이 묶이지 않는 걸 알고 activity_main.xml로 다 몰아넣었다. 2. 툴바 검색창 관련 세팅 드디어 검색창 옆에 x 버튼을 넣었다.(정확히는 ImageView) 나..

Android/Kotlin 2024.01.09

<정리> 챌린지반 과제 3

sealed class가 먼저가 아니라 다른게 먼저가 되었다. 오늘 튜터님께 질문을 드리고 왔는데 생각은 했지만 뷰모델로 옮길 수 있을까 하는 부분들도 옮기는 게 좋다고 하셔서 도전하는 시간이었다. 뷰의 액션을 담당하는 부분은 뷰모델로 옮길 필요가 없다고 말씀해주셨고 이외의 분기 처리와 data class와 관련이 있는 부분들은 옮기면 될 거 같다고 하셨다. 초반에 좀 만지는데 생각보다 쉽지 않았다. 그래도 해결이 된 상태까지 와서 글을 남긴다. 1. onItemSelected 내의 when문 이동 이 부분은 저번에도 시도했다가 매개변수로 너무 옮길 게 많다고 판단해서 하지 않은 부분이었는데 튜터님께서 약간의 힌트를 주셨다. 그래서 아주 쉽게...는 아니지만 잘 이식했다. 가장 먼저는 서비스 제공자들을 ..

Android/StoreInfo 2024.01.09

<정리> 사과마켓 앱 구현 3

아마 오늘로 마무리가 될 거 같다. 왜냐하면 마지막 선택과제가 오늘 마무리가 됐기 때문이다. 1. Snackbar 생성 이 부분은 아주 간단했다. 디테일 페이지에서 하트 버튼을 누를 때 스낵바를 만들고 애니메이션 설정하고 띄우면 됐다. val snackbar = Snackbar.make( it, getString(R.string.snackbar_detail_favorite_comment), Snackbar.LENGTH_SHORT ) snackbar.animationMode = Snackbar.ANIMATION_MODE_FADE snackbar.show() 2. 좋아요 처리 어떻게 이걸 처리할까 고민을 하다가 가장 먼저 data class MarketItem에 Boolean 타입의 isClicked라는 변..

Android/StoreInfo 2024.01.08

<정리> 챌린지반 과제 2

오늘 수업을 들었다. 흐음... 뷰모델을 잘 썼다고 생각했었는데 너무나 많이 부족했다. 다 한 사람이나 어느 정도 완성한 사람 손 들어보라고 해서 들었던 내가 부끄러웠다...ㅎ 그래서 수업을 마치고 달리기 시작했다. 1. Spinner 관리 이게 진짜 제일 어렵고 이해 안되고 머리를 띵- 하게 만들고 결국 약간의 타협으로 결과가 나온 부분이다. 참 여러가지 상황이 나왔다. 스피너가 클릭 이벤트를 무시하거나 넘어가거나 튕기거나... 이러한 상황을 유발하는데 가장 큰 공헌을 한 것은 관리하는 변수에 대한 역할을 크게 잡았다는 것이다. 조금 더 작게 나누니까 해결이 되더라 처음에 나는 서비스제공자를 가지고 EditText 텍스트 값도 채우고 스피너의 값도 조절하려고 했었다. 이렇게 했더니 원하지 않을 때 실행..

Android/StoreInfo 2024.01.08

<정리> 사과마켓 앱 구현 2

어쩌다보니 오늘 2개를 올리게 됐다. 저번 구현 1은 필수 구현 과제가 다 올라가서 거기다 붙혀서 올리기는 좀 그렇더라 1. 플로팅 액션 버튼을 이용한 스크롤 상단 이동 1) 플로팅 액션 버튼 세팅 플로팅 액션 버튼은 xml 상에서 세팅하는게 제일 어려웠다. 뭐하나 기존에 알던 대로 하면 원하는대로 작동을 안 하더라 그렇게 알게 된 것들을 정리해보겠다. app:shapeAppearance="@style/FloatingButtonTheme” - 버튼의 모양을 커스텀할 수 있는 속성인듯함 - 기본 : 약간 모서리 깎은 사각형 - 스타일에서 cornerSize값을 조절해서 원형으로 만듬 android:backgroundTint="@color/selector_fab_click" - 배경 색 지정 - 기본 : 회..

Android/StoreInfo 2024.01.05

<정리> 사과마켓 앱 구현 1

이번주 개인 과제로 나온 사과마켓 앱 처음 들을 때 당근마켓의 느낌이 물씬났는데 맞았다. 지금은 필수구현과제까지 마무리한 내용을 적어놓으려고 한다. 최대한 예제와 비슷하게 하려다 보니 기능 구현보다 레이아웃에 시간을 더 많이 사용했던 거 같다. 기능 자체는 이번주차 강의를 수강했다면 약간의 구글링으로 해결할 수 있었던 거 같다. 1. 레이아웃 관련 요즘은 ConstrainLayout에 푹 빠져있다. 아주 편하고 좋다. 이 과제를 하면서 Layout은 다 ConstraintLayout을 썼다. 레이아웃을 짜면서 가장 어려웠던 건 id를 붙이는 거였다. '어떻게 하면 id 딱 보고 어떤 건지 알 수 있을까?'라는 고민이 많이 들었었다. 그러다보니 좀 길어지고 그러는데 이건 나중에 피드백을 받아보겠다. 메인 ..

Android/StoreInfo 2024.01.05

<정리> 챌린지반 과제 1

예전에 자기소개 앱 구현 글에서 이어지는 거지만 이제는 앱 구현이 아니라 세부 기능들에 대한 조정과 최적화만 들어가있기 때문에 따로 글을 뺐다. 저번 글 이후로 벌써 2주나 지났다... 아마 계속 지금 프로젝트에 겹쳐서 진행이 될 거 같아 또 시리즈로 적어나갈 생각이다. 1. enum class 나는 enum class를 쓰라고 하셨을 때 도대체 어디에 쓰라고 하시는건가 싶었다. 그래서 이 부분은 손도 안 대고 갔었는데 에러 메세지를 한 곳에 모아놓는데 사용할 수 있다는 걸 알게 되었다. 또한 액티비티 이동 간 엔트리 타입들을 모아놓는데에도 사용하는 것도 봤다. 첫 번째로 에러 메세지를 모아둔 enum class다. enum class SignUpErrorMessage( @StringRes val mes..

Android/StoreInfo 2024.01.05
반응형