2026년 3월 24일 - 25일
이번 이틀은 KikiLeoBook 리더 쪽을 집중적으로 손봤다.
처음에는 단순히 빠진 기능을 다시 붙이는 정도로 생각했는데, 실제로 들어가 보니 TXT 리더 안정성, 페이지 이동 상태 동기화, EPUB 표시 정보 연결까지 같이 정리해야 하는 흐름이었다.
결과적으로는 리더 옵션 복구, TXT 리더 구조 개선, 진행 표시 UI 개선 이 세 가지를 중심으로 작업했다.
3월 24일
리더 옵션 기능을 다시 master로 복구
먼저 확인한 건 “예전에 넣어뒀던 페이지 넘김 탭 기능과 옵션 설정이 왜 안 보이느냐”는 문제였다.
조사해 보니 기능이 사라진 게 아니라, 관련 작업이 feature/reader-page-options 브랜치에만 있고 master에는 반영되지 않은 상태였다.
그래서 브랜치 내용을 다시 확인한 뒤 필요한 변경을 master에 병합했다.
복구된 기능은 다음과 같다.
- 화면 좌우 탭으로 이전/다음 페이지 이동
- 리더 옵션 바텀시트
- 글꼴 크기, 글꼴 종류, 줄 간격, 페이지 여백 설정
- 배경색 프리셋
- 화면 꺼짐 방지
- 페이지 이동 / 북마크 / 검색 단축키 설정
이 작업으로 “예전에는 있었는데 지금은 안 보이는 기능” 문제를 정리했다.
TXT 파일을 열 때 멈추는 문제 대응
그다음은 TXT 리더 쪽이었다.
큰 TXT 파일을 열면 앱이 한동안 멈추거나, 경우에 따라 응답 없음처럼 보이는 증상이 있었다.
원인을 따라가 보니, 페이지 분할과 텍스트 처리 일부가 메인 스레드에 부담을 주고 있었다.
특히 전체 텍스트를 한 번에 다루는 흐름은 파일이 커질수록 UI 멈춤으로 이어질 가능성이 컸다.
그래서 구조를 이렇게 조정했다.
- TXT 페이지 분할을 백그라운드에서 수행하도록 변경
- 기존 chunk 기반 읽기 흐름을 다시 활용
- 필요한 chunk만 읽어서 페이지화하도록 정리
- 오래된 비동기 결과가 현재 화면 상태를 덮어쓰지 않도록 보호 로직 추가
즉, “한 번에 다 처리하려던 구조”를 “필요한 만큼 읽고 계산하는 구조”로 되돌리는 쪽에 가깝다.
페이지 이동 후 원래 페이지로 되돌아오는 문제 수정
이날 가장 신경 쓴 부분은 TXT 페이지 이동 안정성이었다.
하단 진행 바로 위치를 옮긴 뒤 오른쪽 화면을 눌러 다음 페이지로 넘기면, 잠깐 애니메이션이 보였다가 다시 원래 페이지로 돌아오는 문제가 있었다.
이건 단순 UI 문제가 아니라 비동기 로딩 타이밍 문제였다.
이전에 요청된 페이지 계산 결과가 늦게 도착하면서 현재 상태를 다시 덮어쓰는 흐름이 있었다.
그래서 아래처럼 정리했다.
- 페이지 로드 세대 관리 토큰 추가
- 늦게 도착한 오래된 로드 결과는 무시
- 레이아웃이 실제로 바뀐 경우에만 재페이지화
- 내부 페이지 상태와
ViewPager2현재 페이지 상태를 다시 맞춤
이 수정으로 “넘어갔다가 다시 돌아오는” 현상을 줄이는 방향으로 안정화했다.
3월 25일
하단 진행 바를 옵션에서 끄고 켤 수 있게 변경
오늘은 리더 UI 사용감을 손봤다.
기존에는 하단 진행 바가 항상 보여서, 책 내용에 조금 더 집중하고 싶은 경우에도 화면 하단이 계속 차지되고 있었다.
그래서 리더 옵션에 하단 진행 바 표시 스위치를 추가했다.
적용한 내용:
- 옵션 바텀시트에 진행 바 표시 스위치 추가
- 설정값을
AppPreferences에 저장 - 앱을 다시 열어도 이전 상태 유지
기본값은 기존 동작과 호환되도록 표시 상태로 두었다.
진행 바를 숨기면 우하단에 상태 표시
진행 바를 아예 숨겨버리면 현재 어느 정도 읽었는지 감이 안 잡힐 수 있어서,
대신 우하단에 작은 상태 표시를 두는 방식으로 보완했다.
표시 규칙은 이렇게 잡았다.
- 값이 준비된 경우:
현재 페이지 / 전체 페이지 - 아직 계산 중인 경우:
Loading...
즉, 정보를 정확히 보여줄 수 있을 때만 숫자를 보여주고,
아직 계산이 끝나지 않았으면 애매한 숫자를 보여주지 않도록 했다.
EPUB 페이지 상태를 Android 쪽으로 연결
EPUB은 epub.js를 사용하고 있는데,
기존에는 진행률 퍼센트 정도만 Android 쪽으로 전달하고 있었다.
이번에는 locationChanged 시점에 아래 정보를 같이 넘기도록 정리했다.
- 현재 화면 기준 페이지 번호
- 현재 화면 기준 전체 페이지 수
- 아직 계산 불가한 경우의 loading 상태
Android 쪽에서는 이 값을 받아서 우하단 상태 표시와 연결했다.
아직 페이지 수가 준비되지 않았을 때는 숫자 대신 Loading...을 보여주도록 했다.
TXT 전체 페이지 수는 백그라운드 계산으로 처리
TXT 쪽은 EPUB처럼 바로 화면 기준 페이지 정보를 주는 라이브러리가 있는 게 아니라서,
전체 페이지 수를 보여주려면 결국 페이지 계산을 해야 한다.
문제는 이걸 메인 스레드에서 하면 다시 리더가 무거워질 수 있다는 점이었다.
그래서 TXT는 현재 chunk만 즉시 표시하고, 전체 페이지 수는 백그라운드에서 차근차근 계산한 뒤 준비되면 우하단 표시를 갱신하도록 만들었다.
이 방식의 장점은 두 가지다.
- 리더가 먼저 열리고 페이지 표시가 뒤따라와도 된다
- 전체 페이지 수 계산 때문에 화면이 멈추지 않는다
사용자 입장에서는 처음엔 Loading...이 보이다가, 계산이 끝나면 현재 / 전체로 바뀌는 흐름이다.
테스트와 빌드 확인
기능을 붙인 뒤에는 바로 검증도 진행했다.
확인한 항목:
AppPreferencesTest통과assembleDebug빌드 성공- 디버그 APK 생성 확인
현재 남아 있는 것은 치명적인 오류가 아니라 경고 수준이다.
TxtReaderFragment의scaledDensitydeprecated 경고- 일부 테스트의 coroutine opt-in 경고
둘 다 다음 정리 단계에서 다뤄도 되는 수준이다.
이번 작업에서 정리된 내용
완료
- 리더 옵션 기능
master복구 - 페이지 좌우 탭 이동 복구
- TXT 리더 chunk 기반 처리 정리
- TXT 페이지 이동 되돌림 현상 완화
- 하단 진행 바 ON/OFF 옵션 추가
- 진행 바 숨김 시 우하단 상태 표시 추가
- EPUB 페이지 상태 전달 연결
- 설정 테스트 통과
- 디버그 빌드 성공
남은 확인
- 실제 기기 기준으로 TXT/EPUB 페이지 표시 체감 점검
- 우하단 페이지 수 표시 정확도 추가 확인
- deprecated / opt-in 경고 정리
메모
이번 작업은 기능을 “더 넣었다”기보다는,
읽는 도중에 거슬리는 부분을 줄이고 리더 상태를 더 일관되게 만드는 작업에 가까웠다.
특히 TXT 리더는 성능과 상태 동기화가 같이 얽혀 있어서,
단순한 UI 수정이 아니라 내부 흐름을 같이 정리해야 했다.
다음 단계에서는 실제 기기 테스트를 조금 더 돌려보면서,
남아 있는 표시 정확도와 경고 정리까지 마무리할 예정이다.
'AI > 잡다한개발노트' 카테고리의 다른 글
| KikiLeoBook 개발 진행 상황 5차 (0) | 2026.03.29 |
|---|---|
| KikiLeoBook 개발 진행 상황 4차 (0) | 2026.03.26 |
| KikiLeoBook 개발 진행 상황 2차 (0) | 2026.03.24 |
| 타워디펜스 - 맵 에디터 × Battle Simulator 통합 강화 플랜 (1) | 2026.03.02 |
| 타워디펜스 개발일지 2026_03_01 (0) | 2026.03.01 |