일주일간 미뤄둔 TIL 드디어 다시 컴백!
지난 일주일은 첫 프로젝트 주간이라 진짜 정신이 하나도 없었다.
프로젝트를 잘 완수하고싶어서 코드카타도 미뤄두고 프로젝트에만 매진했는데도
금요일까지 끝내려고 했던 계획이 무산되고 주말까지 나와서 다들 고생하셨당..
우리팀 체고!!!
기록도 열심히 했어야했는데 기록도 제대로 못하고 진행해서
다 끝낸 오늘 기억나는 것들 위주로 첫번째 프로젝트를 정리할 것!
팀 이름 : 주빈과 아이들
프로젝트 주제 : SNS 앱 만들기
프로젝트 필수 구현사항
프로젝트 선택 구현사항
1.회의 방식
Figma 잼에서 아이디어 회의 , Figma로 와이어 프레임 제작
2.논의한 내용
3.논의 결과
앱 이름 : PlayList
앱 주제 : 종합 게임의 리뷰를 공유하며 본인 취향에 맞는 게임을 찾을 수 있게 도와주는 SNS
컬러 코드

Primary Color : A2C9E9
Secondary Color : D4E2ED
White : FFFFFF
Gray : BCBCBC
Black : 222222
폰트 & 사이즈
폰트 : Pretendard

개발 룰 :

피그마로 회의하면서 와이어 프레임이 뭔지 모르는 분도 계시고 해서
와이어 프레임 설명드리고, 어떻게 디자인 회의를 할까 하는데, 사실 나는 한명이 디자인 싹 맡아서 하는게 효율은 제일 나을 것 같았지만, 그러면 모두의 의견을 다 반영하기 어려울 것 같고, 다들 피그마 사용에 익숙해지면 좋은데 피그마를 한번도 안 써보신 분도 게셔서 그냥 다들 페이지 하나씩 맡아서 진행하면 경험이 되어서 발전하는데에는 더 좋지 않을까해서 각자 페이지 하나씩을 디자인 맡았다.
근데 처음에는 와이어 프레임 건너뛰고 바로 디자인 할 것 처럼 말했던 것 같은데 만들고 보니 나만 디자인처럼 만들고 다른 분들은 와이어 프레임으로 만들어놓으셔서 좀 통일이 안됐다..ㅜ
나중에 끝나고는 다들 그냥 한명이 맡아서 하는게 나았을 것 같다고 하는 의견이 나와서 앗..그냥 그때 얘기할 걸 싶은 생각이 들었지만 그래도 나는 다 같이 참여해서 피그마 한번씩 만져보고, UI 구성에 의견 내보고 하는게 나쁘지 않았다고 생각함~!
개별적으로 작업을 들어가기 전, 레포지토리를 생성하고, 기초 프로젝트를 만들고, dev브랜치를 만들고 각자 feature 브랜치를 만들어서 작업을 시작했다.
나는 Detail Activity 를 맡아서 작업했기 때문에
feature_detail이라는 브랜치를 만들어서 작업했다.
처음 협업 때 뭔지도 모르고 git 써봤던게 그래도 많이 도움이 됐다.
역시 서당개 삼년이면 풍월을 읊는다는 말이 쌩구라가 아님. 옆에서 뭔지도 모르는걸 보기만 해도 나중에 직접 할 때 훨씬 도움이 된다.
사실 내가 맡은 페이지가 그렇게 어려운 페이지가 아니여서 처음에는 딱히 어려운 점이 없었다.
구성하던 중에 별점 주는 기능은 어떻게 구현할까. 하고 찾다가 Rating Bar라는 걸 알았다.
ㄹㅇ 개꿀 기능!
이런게 있는지 모르고 처음에 별점 구상했을때는
코드로 직접 짜야되는 줄만 알고 고생할수도 있겠다 생각했는데 Rating Bar라는 기능이 있어서 쉽게구현했다.
Rating Bar 간단 설명
<RatingBar
android:id="@+id/rb_d_user_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:isIndicator="true"
android:numStars="5"
android:progressTint="@color/primary"
android:rating="3.5"
android:stepSize="0.5"
app:layout_constraintStart_toStartOf="@id/tv_d_username_rating"
app:layout_constraintTop_toBottomOf="@id/tv_d_subtitle_user_rating" />처음에는 바텀 네비게이션 바를 만들어서 서로 넣어주기 위해서 사용했는데, 결국 나중에는 모션레이아웃을 사용하게 되면서 코드가 복잡해져서 하나의 xml에서 작성했던 애들을 header와 scroll 파트로 나눠서 각각 다른 xml에 옮겨적어주고, include로 가져왔다.
include 간단 설명
<include
android:id="@+id/d_navigation"
layout="@layout/bottom_navigation_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"/>게임의 가격 정보를 받아서 표시할 때 받는 정보에서는 그냥 Int값이 들어오는데, 그러면 너무 보기 어렵기도 하고 딱 보기에 예쁘지가 않길래, Regex를 통해서 받은 값에 콤마를 찍어서 표시하도록 만들어줬다.
tmi : 처음 써보는 건 아니지만, 프로젝트나 과제에서 실사용? 하는 건 처음이라서 미리 공부해놓은게 뿌듯해짐!
Regex 간단 설명
fun priceRegex(priceString: String): String {
var finalPrice = ""
if (priceString == "0") {
finalPrice = "무료 게임"
} else {
val regex = Regex("(\\d)(?=(\\d{3})+(?!\\d))")
finalPrice = "₩ " + priceString.replace(regex, "$1,")
}
return finalPrice
}리뷰의 글 부분이 길 때 처음부터 리뷰를 전부 표시하지 않고, 처음에는 두줄만 보이다가 유저가 더보기를 클릭하면 리뷰를 전부 볼 수 있게 만들었다.
TextView의 maxlines와 ellipsize라는 속성을 조정해서 만듦
maxlines : 텍스트뷰가 보이는 최대 줄 수 설정
ellipsize : 속성을 end로 주면 maxline으로 줄여졌을 때 보이는 마지막 글자들 뒤에 …이 붙어서 나온다.
userReview.maxLines = Int.MAX_VALUE
userReview.viewTreeObserver.addOnGlobalLayoutListener(object :
ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
if (userReview.lineCount <= 2) {
showMore.visibility = View.GONE
} else {
showMore.visibility = View.VISIBLE
}
userReview.maxLines = 2
userReview.viewTreeObserver.removeOnGlobalLayoutListener(this)
}
})
showMore.setOnClickListener {
if (userReview.maxLines == 2) {
userReview.maxLines = Int.MAX_VALUE
showMore.text = "닫기"
} else {
userReview.maxLines = 2
showMore.text = "더보기"
}
}
추가 설명 : 처음에는 showMore.setOnClickListener로만 만들었는데 저렇게만 하니까
애초에 2줄이 안넘는 짧은 리뷰에도 더보기가 있어서 UX적으로 사용자가 헷갈릴 것 같아서 애초에 2줄이 안되는 리뷰에는 더보기가 나오지 않게 만들어주기 위해서 viewTreeObserver를 사용해서 뷰가 그려진 이후에 라인을 세고 줄 수에 따라서 더보기의 visibility를 설정해주었다.
필수 구현사항인 액티비티 전환 시 애니메이션 구현을 하기위해 넣었다.
나는 화면 디자인에 어울리게 메인 액티비티에서 디테일 화면을 눌렀을 때 아래에서 위로 화면이 나오는 것처럼 나오고, 닫기를 누르면 아래로 다시 내려가면서 종료되게 만들었다.
overridePendingTransition 간단 설명
overridePendingTransition(R.drawable.slideup, R.drawable.no_animation)
val back = findViewById<ImageView>(R.id.iv_icon_back) // < 뒤로가기 버튼
back.setOnClickListener {
super.finish()
overridePendingTransition(0,R.drawable.slideout)
}<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="100%"
android:toYDelta="0%"
android:duration="500"/> <!-- 애니메이션 지속 시간 (밀리초) -->
</set>튜터님이 Sa 피드백으로 이런 레이아웃이면 모션 레이아웃을 사용해서 해보면 좋을 것 같다고 한번 공부해서 넣어보라고 미션같은 아이디어를 주시고,, 참고할 자료도 주셔서 공부해서 적용함!
모션 레이아웃 간단 설명
println으로 로그 확인하는 방법
drawable id? 나 id 값들이 인트값이였다는것?
log로 찍어보면서 오류 해결하는 방식
한번 다같이 dev에 머지를 하고 작업 진행 상황을 한번 확인하고, 어떤걸 더 하면 좋을지 등을 논의 했다.
건의사항 :
로그인 :
메인 :
디테일 :
탐색 :
프로필 :
다른 분들 화면을 다 받아와서 보면서 피드백을 진행하고, 각자 다시 수정함!
이 쯤 부터 슬슬 완성 된 사람은 아직 안 된 사람이나 어려움이 있는 사람가서 도와주기도하고
주말에 시간 얼마 안 남았을 때는 그냥 아예 기능 몇개 맡아서 추가해주거나 했음!
작업 완료 후에 이제 dev에 전부 머지하고 각자 에뮬레이터로 테스트해보면서 버그나 수정사항을 찾아서 수정했다.
다 끝나고 dev에서 main으로 머지하고 제출!!!
우리는 결국 다크모드, 폰트크기 설정에따라 변경, 가로모드 구현은 못하고 나머지는 다 했다!!
다행히 첫 프로젝트를 하는 팀이 너무 잘걸려서 다들 본인 의견 피력을 잘하시고,
각자 맡은일도 열심히 해주시고, 시간약속도 잘지켜주시고, 주말까지 나와서 작업하실만큼 열의가 있는 분들이 계셨다.
제각각의 실력인 사람들이 한 팀으로 묶어서 처음으로 작업해보는 거다 보니까 답답해 한다거나, 게을러진다거나, 주눅이 든다거나 할 수있는데 팀원들 모두 그런거없이 적극적으로 참여해주시고 모르는 부분도 잘 질문하면서 해결해나가셔서 무사히 마무리 할 수 있었다고 생각한다.
나는 사실 주말에도 원래 나와서 혼자 공부하는 사람이라 괜찮았는데 다른 분들은 주말에 나와야할 때 싫어하실까봐 걱정을 했는데 다들 나와서 너무 열심히 해주심.
나도 회원가입 기능 맡은 분이 로그인 페이지랑 두개 다 맡으면서 너무 버거우신 것같아서 그분 퇴근후에 따로 남아서 회원가입 기능이나 UI수정을 했는데, 우리팀 코딩 챌린저분도 같이 새벽 5시 까지 남아서 같이 해주셨다.. 본인 파트만 하셨으면 이미 끝내셨을 걸 다른 분들 먼저 도와주시느라 자기파트도 미루고 늦게까지 남아서 해주시는게 아주아주 감동이였다..두번째 같은팀이였는데.. 또같은팀되고싶다…사실 조바뀌는게 너무 싫다!!!이번 조 좋았는데!!!!!!!!분위기 짱이였는데!!!!!!!!!!!!!!!!!!!!
아쉬운건 매니저님들이 ppt만드는데 너무 시간쓰지말고 발표준비보단 개발에 집중하라고 하도 강조하시길래 발표준비 너무 열심히 만들면 혼날까봐 신경안썼는데,,, 다른 조들 보니까 너무 ppt를 예쁘게 만 들어오셔서 우리도 피피티 열심히 만들어올걸!하고 아쉬웠다 나는 평소에 ppt가 굉장히 중요하다고 생각해서 원래같으면 최대한 열심히 만들었을텐데 일부러 대충만든건데…………..우리 팀 열심히 만든 앱이 생각보다 어필이 안된 것같아서 조금 속상했다….
그래도 주말까지 나와서 최선을 다해서 진행했기도 하고, 소통이 원활하게 되었어서 아주 행복했당!
현지님😊 이번 프로젝트 만족스럽게 진행하신 것 같아서 저도 너무 기쁩니다!
다음 프로젝트 때는 버그나 에러에 대해 수정하신 부분도 좀 더 상세하게 적으시면 더 완벽한 기록이 되지 않을까 싶어요! (매일 마주한 것들을 그때 그때 조금씩 작성하면 더 좋겠죠!😁)그래도 사용하셨던 기술 잘 정리해주신 것도 너무 멋집니다!
늘 말씀드렸지만, 이번 프로젝트는 하나의 퀄리티 높은 결과물을 만들어내기보다, 배운 내용을 활용하여 팀원들과 협업을 하는 것에 더 큰 의미가 있었기 때문에 발표 자료에 관해서 너무 아쉬워하지 않으셔도 될 것 같습니다! 현지님이 이렇게 써주신 기록을 보면 누구보다 의미 있는 협업을 통해 좋은 결과물을 만들어 내신 것도 제가 다 알고 있습니다!👍
이번에 새로 들어가는 챕터에서는 좀 더 배운 내용 복습에 초점을 맞추어서 스코프 잘 정하셔서 원활한 프로젝트 하실 수 있도록 학습도 파이팅 해봅시다!