-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PC-92] Matching 화면 UI 구현 #11
Conversation
cf5ef32
to
c241b7c
Compare
c241b7c
to
91a693a
Compare
fun Modifier.addFocusCleaner( | ||
focusManager: FocusManager, | ||
doOnClear: () -> Unit = {}, | ||
): Modifier { | ||
return this.pointerInput(Unit) { | ||
detectTapGestures( | ||
onTap = { | ||
doOnClear() | ||
focusManager.clearFocus() | ||
}, | ||
) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
추후에 TextField를 사용하는 곳 외부를 클릭했을 때 키보드 포커스를 회수해가는 Modifier 입니닷
@Composable | ||
fun Modifier.throttledClickable( | ||
onClick: () -> Unit, | ||
enabled: Boolean = true, | ||
throttleTime: Long = 0L, | ||
): Modifier = composed { | ||
var lastClickTime by remember { mutableLongStateOf(0L) } | ||
|
||
this.clickable(enabled = enabled) { | ||
val currentTime = System.currentTimeMillis() | ||
if (currentTime - lastClickTime >= throttleTime) { | ||
onClick() | ||
lastClickTime = currentTime | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
버튼 따당을 막기위해서 Throttle이 적용된 clickable 입니닷!
…ent를 Flow로 받도록 변경
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
허허 태규님!! 코멘트가 늦어서 죄송합니다... 허허...
return this.pointerInput(Unit) { | ||
detectTapGestures( | ||
onTap = { | ||
doOnClear() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혹시! 여기에 doOnClear() 에서 do는 강조를 의미하기 위한 것일까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
혹시! 여기에 doOnClear() 에서 do는 강조를 의미하기 위한 것일까요?
앗 그냥 레퍼런스에 있는 코드 긁어온건데,
키보드 포커싱 가져오면서 수행할 로직이 있을 때 넣는 람다입니다.
네이밍이 별루인가요 ?!?!?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아, 그렇군요! 제가 오해했던 것 같습니다!! 지금 네이밍도 충분히 괜찮은데, 'onFocusCleared'와 같은 이름은 어떻게 생각하시나요?! 이건 그냥 한번 생각해보시고 태규님이 결정해주셔도 좋을 것 같습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아, 그렇군요! 제가 오해했던 것 같습니다!! 지금 네이밍도 충분히 괜찮은데, 'onFocusCleared'와 같은 이름은 어떻게 생각하시나요?! 이건 그냥 한번 생각해보시고 태규님이 결정해주셔도 좋을 것 같습니다!!
지금 그런식으로 코드가 짜여져있어서 그런 식의 컨벤션을 따라가는 것이 일관성에 도움이 될 것 같아요!
바꿔놓고 머지하겠습니다~
fun Modifier.throttledClickable( | ||
onClick: () -> Unit, | ||
enabled: Boolean = true, | ||
throttleTime: Long = 0L, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p4 : throttleClickable이면 throttleTime이 필수로 입력받을 수 있으면 좋을 것 같은데 어떻게 생각하시나요?!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p4 : throttleClickable이면 throttleTime이 필수로 입력받을 수 있으면 좋을 것 같은데 어떻게 생각하시나요?!
오 그런 것 같아요!!!!!! 수정해두겠습니다!!!
) | ||
|
||
Text( | ||
text = "오픈 전", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p3 : 혹시 데이터를 state화 하는건 다음 작업 때 하시는 건가유?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p3 : 혹시 데이터를 state화 하는건 다음 작업 때 하시는 건가유?
맞습니다! 아직 스웨거가 안열려서 일단 UI만 했어용
@@ -40,7 +41,9 @@ class MatchingViewModel @AssistedInject constructor( | |||
|
|||
private fun processIntent(intent: MatchingIntent) { | |||
when (intent) { | |||
else -> Unit | |||
MatchingIntent.NavigateToMatchingDetail -> { | |||
navigationHelper.navigate(NavigateTo(MatchingGraphDest.MatchingDetailRoute)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p4 : 저는 개인적으로 intent가 많아져 processIntent가 길어지면 가독성이 너무 떨어져서 처리하는 메서드를 따로 빼서 거기서 로직을 처리하는 방식으로 합니다! 이건 태규님이 작성하시면서 편하신 쪽으로 하셔도 좋을 것 같아유!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- p4 : 저는 개인적으로 intent가 많아져 processIntent가 길어지면 가독성이 너무 떨어져서 처리하는 메서드를 따로 빼서 거기서 로직을 처리하는 방식으로 합니다! 이건 태규님이 작성하시면서 편하신 쪽으로 하셔도 좋을 것 같아유!
저도 메소드로 분리하는 것을 선호하는데 한줄짜리 코드라서 저렇게 하긴 했습니다!
일단 코드 일관성을 위해 분리해두겠습니다!
ed034e6
to
6d361ed
Compare
PC-92
1. ⭐️ 변경된 내용
common-ui
모듈 추가 및 ModifierUtil 추가2. 🖼️ 스크린샷(선택)
1. 버튼 컴포넌트
2. TopBar(GNB) 컴포넌트
3. Matching 화면 UI
2024-12-26.1.02.56.mov
3. 💡 알게된 부분
1. Compose의 ScrollBar 추가하기
핵심은 ListState를 받아서 화면에 보이는 FirstIndex와 LastIndex를 이용해서 현재 인덱스를 파악,
이후는 해당 리스트의 아이템 총 갯수를 이용해서 Height를 설정하는 것 같습니다.
그 외에는 투명화 애니메이션, 스크롤 바의 상단 및 하단 애니메이션이에요
레퍼런스 를 참조하였고,
저희 서비스에 맞게 너비를
6.dp
로 고정 및 Radius를 추가하였습니다.