From 3b8fc9ca5d5fc86d08006786f4ab9f4c0c906885 Mon Sep 17 00:00:00 2001 From: jjangddu Date: Tue, 26 May 2026 17:51:40 +0900 Subject: [PATCH] =?UTF-8?q?UI:=20Sensor=20Alignment=20=EB=B0=A9=ED=96=A5?= =?UTF-8?q?=20=ED=99=94=EC=82=B4=ED=91=9C=204=EC=A2=85=20=EB=B3=B5?= =?UTF-8?q?=EC=9B=90=20(=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=9A=94=EC=B2=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 빌드 111(e0f92eb)에서 의도적으로 제거했던 4방향 화살표(↑↓←→)를 사용자 요청으로 복원. directionIcon에 따라 센서/타원 바깥에 그려짐. Hint 텍스트와 함께 시각적 방향 안내 제공. 색상 #FF5722 · arrowLen 70f · sw 9f (Charles 833c110 원본 사양 그대로) Co-Authored-By: Claude Opus 4.7 (1M context) --- .../ui/views/monitoring/PlacementGuideView.kt | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) 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 1f4f5b4..cd98ef2 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 @@ -430,7 +430,41 @@ fun PlacementGuideView(appState: AppState) { alpha = 0.95f, ) - // 빌드 111(e0f92eb): Canvas 방향 화살표 4종 제거 — hint 텍스트로만 방향 안내 + // ── 방향 화살표 (센서/타원 바깥, 충분한 간격) — 복원 (사용자 요청) ── + if (!greenZone) { + val arrowColor = Color(0xFFFF5722) + val arrowLen = 70f + val arrowHead = 28f + val sw = 9f + val sensorHalfH = h * 0.08f + + when { + directionIcon.contains("up") -> { + val ay = bladderCy - bladderRy - sensorHalfH - 20f + drawLine(arrowColor, Offset(cx, ay + arrowLen), Offset(cx, ay), strokeWidth = sw) + drawLine(arrowColor, Offset(cx - arrowHead, ay + arrowHead), Offset(cx, ay), strokeWidth = sw) + drawLine(arrowColor, Offset(cx + arrowHead, ay + arrowHead), Offset(cx, ay), strokeWidth = sw) + } + directionIcon.contains("down") -> { + val ay = bladderCy + bladderRy + sensorHalfH + 20f + drawLine(arrowColor, Offset(cx, ay - arrowLen), Offset(cx, ay), strokeWidth = sw) + drawLine(arrowColor, Offset(cx - arrowHead, ay - arrowHead), Offset(cx, ay), strokeWidth = sw) + drawLine(arrowColor, Offset(cx + arrowHead, ay - arrowHead), Offset(cx, ay), strokeWidth = sw) + } + directionIcon.contains("left") -> { + val ax = cx - bladderRx - 30f + drawLine(arrowColor, Offset(ax + arrowLen, bladderCy), Offset(ax, bladderCy), strokeWidth = sw) + drawLine(arrowColor, Offset(ax + arrowHead, bladderCy - arrowHead), Offset(ax, bladderCy), strokeWidth = sw) + drawLine(arrowColor, Offset(ax + arrowHead, bladderCy + arrowHead), Offset(ax, bladderCy), strokeWidth = sw) + } + directionIcon.contains("right") -> { + val ax = cx + bladderRx + 30f + drawLine(arrowColor, Offset(ax - arrowLen, bladderCy), Offset(ax, bladderCy), strokeWidth = sw) + drawLine(arrowColor, Offset(ax - arrowHead, bladderCy - arrowHead), Offset(ax, bladderCy), strokeWidth = sw) + drawLine(arrowColor, Offset(ax - arrowHead, bladderCy + arrowHead), Offset(ax, bladderCy), strokeWidth = sw) + } + } + } } // (sensor 이미지는 위 Canvas drawImage 로 이동 — body silhouette과 동일 좌표계)