내일 타이머 회전 구현 설명 스톱워치2
아래는 “오늘 만든 2번째 스톱워치(전환형)”가 어떤 파일들이 어떤 원리로 움직이는지 , 특히 회전(QuarterTurnLayout) 과 XML을 2개(layout / layout-land) 쓰는 이유 , 그리고 나중에 수정하려면 무엇을 고치면 되는지 를 “주석처럼” 단계별로 정리한 설명입니다. (동우님이 이미 Gemini로 최종 수정본을 갖고 계신 상태를 기준으로, 구조/원리를 재현 가능한 형태 로 설명합니다.) 1) 전체 구조 한 장 요약 목표 스톱워치 탭(StopWatchFragment) 안에 기존 스톱워치 UI(555 스타일) = 계속 동작 2번째 스톱워치 UI(2번 스타일) = 전환 시 화면에 표시 “전환” 버튼을 누를 때마다 보이는 UI만 바뀌고 각 스톱워치 로직은 서로 독립적으로 유지 핵심 구현 방식 같은 Fragment(StopWatchFragment) 안에서 View/Fragment를 show/hide(또는 replace) 2번째 UI는 별도 StopwatchSecondFragment + StopwatchSecondViewModel 로 분리 회전 문제는 android:rotation 을 쓰지 않고, QuarterTurnLayout(커스텀 ViewGroup)에서 Canvas 회전 + 터치 좌표 변환 으로 해결 화면 방향에 따라 XML을 다르게 적용: portrait: layout/activity_stopwatch_second.xml (QuarterTurnLayout 포함) landscape: layout-land/activity_stopwatch_second.xml (QuarterTurnLayout 없이) 2) “전환” 동작 원리 (UI 전환이 왜 안정적인가) 전환 버튼이 하는 일(개념) 전환 버튼을 누르면 “UI만 숨기고/보이게” 합니다. 기존 스톱워치의 타이머/핸들러/코루틴이 돌아가는 구조라면, View를 GONE 으로 만든다고 해서 로직이 자동으로 중단되는 건 아닙니다. 즉 “기존 스톱워치는 계속 작동하지만 화면에서는 안...