From 7b8b8fb6aebabaeaabedf4ab79d82bb946b0f462 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Wed, 17 Jun 2026 09:52:18 +0900 Subject: [PATCH] =?UTF-8?q?ux:=20Sensor=20Alignment=20hint=201/2=20?= =?UTF-8?q?=EB=91=98=20=EB=8B=A4=20=EC=83=81=EC=8B=9C=20=ED=91=9C=EC=8B=9C?= =?UTF-8?q?=20(=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=95=88=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 이전: waitingForStart 분기로 hint1 또는 hint2 하나만 표시 → 시작 누르면 레이아웃이 위아래 이동. 변경: 두 hint 영역 모두 항상 렌더 → 일러스트/Step 위치 고정. Hint 1 (일러스트 위): 'Place VesiScan above the pubic bone, then press Start' (시작 안내, 고정) Hint 2 (일러스트 아래): displayHint (동적 — 시작 전엔 안내문, 진행 중엔 방향) waitingForStart 초기 상태에는 hint 1/2 가 비슷한 메시지 보일 수 있음 (의도된 동작 — 레이아웃 안정성 우선). Co-Authored-By: Claude Opus 4.7 --- .../ui/views/monitoring/PlacementGuideView.kt | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt index 4e42e00..8aed70f 100644 --- a/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt +++ b/app/src/main/java/com/example/medilightv2android/ui/views/monitoring/PlacementGuideView.kt @@ -221,23 +221,20 @@ fun PlacementGuideView(appState: AppState) { .padding(horizontal = 24.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - // ─── (1) Hint 1 — 시작 전 안내 ("pubic bone 위에 놓으세요") ─── - // waitingForStart 일 때만 표시. 시작 후엔 빈 공간. - if (waitingForStart) { - val hint1Bg = Color(0xFFFFF3E0) - Text( - text = "Place VesiScan above the pubic bone, then press Start", - fontSize = 26.sp, // 태블릿: 더 크게 - fontWeight = FontWeight.Bold, - color = Color.Black, - textAlign = TextAlign.Center, - modifier = Modifier - .fillMaxWidth() - .background(hint1Bg.copy(alpha = 0.7f), RoundedCornerShape(16.dp)) - .padding(horizontal = 20.dp, vertical = 14.dp) - ) - Spacer(modifier = Modifier.height(8.dp)) - } + // ─── (1) Hint 1 — 시작 전 안내 (항상 표시, 레이아웃 안정) ─── + val hint1Bg = Color(0xFFFFF3E0) + Text( + text = "Place VesiScan above the pubic bone, then press Start", + fontSize = 26.sp, // 태블릿: 더 크게 + fontWeight = FontWeight.Bold, + color = Color.Black, + textAlign = TextAlign.Center, + modifier = Modifier + .fillMaxWidth() + .background(hint1Bg.copy(alpha = 0.7f), RoundedCornerShape(16.dp)) + .padding(horizontal = 20.dp, vertical = 14.dp) + ) + Spacer(modifier = Modifier.height(8.dp)) // 타이틀은 top bar 로 이동 (← 옆 절대 가운데) — 본문 중복 제거. // ── 가이드 텍스트 (Step 아래, 몸 위) — "pubic bone" 인라인 빨강 ExtraBold 강조 ── @@ -486,21 +483,18 @@ fun PlacementGuideView(appState: AppState) { Spacer(modifier = Modifier.height(8.dp)) - // ─── (5) Hint 2 — 측정 중 방향 안내 ("Slide up slightly ↑" 등) ─── - // waitingForStart 가 아닐 때 (=scanning 또는 phaseHold) 만 표시. - if (!waitingForStart) { - Text( - text = displayHint, - fontSize = 28.sp, // 22 → 28 (태블릿) - fontWeight = FontWeight.Bold, - color = Color.Black, - textAlign = TextAlign.Center, - modifier = Modifier - .fillMaxWidth() - .background(hintBg.copy(alpha = 0.7f), RoundedCornerShape(16.dp)) - .padding(horizontal = 20.dp, vertical = 14.dp) - ) - } + // ─── (5) Hint 2 — 측정 중 방향 안내 (항상 표시, 레이아웃 안정) ─── + Text( + text = displayHint, + fontSize = 28.sp, // 22 → 28 (태블릿) + fontWeight = FontWeight.Bold, + color = Color.Black, + textAlign = TextAlign.Center, + modifier = Modifier + .fillMaxWidth() + .background(hintBg.copy(alpha = 0.7f), RoundedCornerShape(16.dp)) + .padding(horizontal = 20.dp, vertical = 14.dp) + ) Spacer(modifier = Modifier.height(8.dp))