유데미 STARTERS(스타터스) 취업 부트캠프 2기 - 프론트엔드(Android, 안드로이드) 12주차 학습 일지

Delight Yoon·2023년 1월 1일
0

웅진X유데미 STARTERS

목록 보기
14/16
post-thumbnail

📌 Week 12 - 스프린트3 데모

이번 주는 진짜 정신없이 개발했다.

이번 스프린트3의 목표가 초기 데이터까지 모두 삽입 후 apk파일을 빌드해서 배포하는 것이기 때문이었다.

하지만, 결과는 우선순위 3을 제외한 거의 모든 기능을 구현을 완료하였고, 목표를 달성할 수 있다고 생각하였는데 실패하였다.

막상 마무리를 하려니 지금까지 숨어있던 버그들이 나타나기 시작했고, 너무 오류 투성이었다.

데모 발표가 있는 날까지도, 순서를 기다리는 중에도 버그를 해결하기 위해 코드를 작성했다.


📌 진행한 작업


이번 주에 완료한 PR이다.

주로 API를 연결하는 작업을 진행하였고, API를 좀 수정해야 하는 경우가 있었지만 API 수정을 기다리는 작업을 제외하고는 크게 어려움이 없었다.

다음은 유저 상세화면(지역 Chip 버튼 중복 버그 발생)이다.

다음과 같이 유저의 여행 게시글을 볼 수 있고, 유저의 여행지를 지역 별로 나누는 것을 Chip Button을 동적으로 생성하는 식으로 개발을 진행하기로 했다.
왜냐하면, 모든 지역들을 모두 미리 만들어 놓기에는 17개의 지역 카테고리가 있었고, 유저가 작성한 여행지의 지역에 해당하는 카테고리만 제공하기 위해서였다.

하지만, Chip Button의 경우 정적으로 만들면 다음과 같이

<com.google.android.material.chip.ChipGroup
	android:id="@+id/chipGroup"
    android:layout_height="wrap_content"
	android:layout_width="wrap_content">
    
    <com.google.android.material.chip.Chip
    	android:id="@+id/chip_around_place_food"
        style="@style/Widget.MaterialComponents.Chip.MyStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/around_place_food"
        app:chipBackgroundColor="@color/color_chip"
        app:chipIconSize="20dp"
        app:iconEndPadding="-4dp"
        app:iconStartPadding="4dp" />
                       
</com.google.android.material.chip.ChipGroup>

ChipGroup 내부에 정적인 Chip을 만들어 xml 코드에 style을 적용하는 코드를 작성할 수 있는데, 동적으로 할 경우에는 ChipGroup만을 만든 후 코드를 통해 ChipGroup에 AddView 라는 함수를 사용하는 방식으로 진행하게 된다.

이 때, 스타일을 적용하는 방법에 대해서 시간이 조금 소요되었다. 물론 여기 좋아에서도 지역 카테고리를 적용하기는 하지만, TabLayout을 사용하는데, 동적 탭을 추가하는 방식은 생각보다 쉽게 구현하였는데, 동적 Chip 을 추가하는 데에 어려움을 겪었다..

해결방법은 이러하다.

다음과 같이 ChipGroup에 addView 함수를 호출하여 Chip을 동적으로 생성할 수 있고,

values 폴더에 attr 값으로 Style을 적용할 수 있다. themes 에 style item 변수를 참조하는 방법이다.

아래 코드를 참조하자.

attr.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="regionChipStyle" format="reference" />
</resources>

themes.xml

<style name="Theme.YeoGida" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    ...
    <item name="regionChipStyle">@style/MyRegionChip</item>
</style>

@style/MyRegionChip

<style name="MyRegionChip" parent="Base.Widget.MaterialComponents.Chip">
    <item name="android:checkable">true</item>
    <item name="android:focusable">false</item>

    <item name="chipIconVisible">false</item>
    <item name="checkedIconVisible">false</item>
    <item name="closeIconVisible">false</item>

    <item name="chipStrokeWidth">0.5dp</item>
    <item name="chipStrokeColor">@color/stroke_color_region_chip</item>

    <item name="android:textColor">@color/text_color_region_chip</item>
    <item name="android:textAppearance">@style/RegionChipTextAppearance</item>

    <item name="chipIconTint">@color/text_color_region_chip</item>
    <item name="rippleColor">@null</item>
    <item name="chipBackgroundColor">@color/white</item>
</style>

📌 마무리

지금까지 스프린트1과 스프린트2에서 작업이 더디어 이번 스프린트3에서 많이 힘들었지 않았나라는 생각이 많이 든다.

JWT, Spring Security를 사용하는 방식으로 로그인, 회원가입을 진행했던 부분도 처음이었고, 프로젝트를 진짜 제대로 진행하는 경우가 거의 처음이라 모든 작업들이 속도가 더디지 않았나 싶다. 다음에 프로젝트를 진행하게 된다면 이번 프로젝트에서 사용해봤던 부분들은 빠르게 구현하고 시간을 확보할 수 있지 않을까라는 생각이 많이 든다.

이번 스프린트3까지 해서 거의 주요 기능은 모두 구현을 완료하였다. 이번 데모 발표 중에도 발생했던 버그들도 금요일과 주말 시간을 이용하여 다 수정하였고, ProgressBar, 앱 아이콘, apk 빌드까지 모두 완료하였다.

이제 앞으로는 공지사항, 고객센터 쪽 부분과 같은 우선순위 3의 기능 구현을 진행하면서 apk파일을 배포할 예정이다.
플레이 스토어에 직접 배포하기 전에 유저 피드백을 얻고, 피드백에 대해서 테스팅과 코드 리팩토링을 진행하려고 한다.

이제 마지막 스프린트인데 잘 마무리하였으면 좋겠다는 생각이 들고, 내일은 최종평가가 있는 날이다. 중간평가의 성적이 저조하였던 부분도 있고, 구현을 모두 완료하였다고 생각했던 부분들이 뒤에 요구사항들을 해결하면서 에러가 발생하여 감점 요소가 많았었다. 내일은 그러한 부분들을 신경써서 평가에 임해보려고 한다.

모두 최종평가에서 좋은 결과가 있었으면 좋겠다.. 화이팅 !!


💡 본 후기는 유데미-웅진씽크빅 취업 부트캠프 2기 - 프론트엔드&백엔드 과정 학습 일지 리뷰로 작성되었습니다.

profile
Yoon's Dev Blog

0개의 댓글