coldsalt (1.♡.88.69)
2026년 3월 1일 AM 01:56
자게에 올렸는데 자료실에도 한번 올려보라는 격려의 글이 있어서 올려봅니다.
그냥 순수하게 제 필요성에 의해서 무협지... 아니 text viewer를 만들어봤습니다.
여러 개로 분권되어있는 무협지에 최적화 되어있습니다.
코딩은 1줄도 안 했고, 입코딩으로만 완성...
그냥 직관적으로 쓰시면 되고, 자세한 기능은 Claude.md에 넣은 걸 붙여드립니다.
쓰다가 아주 이상한 거 있으시면... 피드백 댓글로 남겨주시면
Claude에게 다시 물어볼께요. 저는 못 고칩니다.
---
## 주요 기능
- ChunkedFileReader (줄 오프셋 인덱싱, 페이지 읽기, 검색)
- LazyColumn 뷰어 (검색 하이라이트, 북마크 표시, 동적 글자 크기, 폰트 선택)
- 검색 기능 (전체 파일 검색, 결과 탐색)
- 상하좌우 터치 영역 화면 단위 이동 (Modifier.touchZoneTap, 부모-자식 3-pass 포인터 시스템)
- 상단(120dp)/하단(120dp): 전체 너비, 이전/다음 페이지
- 좌(80dp)/우(80dp): 전체 높이, 이전/다음 페이지
- 우상단 귀퉁이(80×120dp): 북마크 목록 빠른 진입 (상단·우측보다 우선 판정)
- 좌하단 귀퉁이(80×120dp): 이전 파일 이동 (하단·좌측보다 우선 판정)
- 우하단 귀퉁이(80×120dp): 다음 파일 이동 (하단·우측보다 우선 판정)
- 중앙(160×240dp): 오버레이 토글
- LazyColumn 부모 Box에 Modifier로 적용 → 스와이프/fling과 탭 자연 분리
- 볼륨 키 페이지 이동 (Volume Up → 이전 페이지, Volume Down → 다음 페이지)
- 북마크 기능 (Room DB, 길게 누르기 토글, 우상단 탭으로 목록 빠른 진입)
- 한글/EUC-KR, UTF-8 BOM, UTF-16 인코딩 자동 감지
- 하단 오버레이 Slider (파일 내 % 위치 이동)
- 스크롤 끝 자동 페이지 전환 (위/아래 양방향)
- 화면 밝기 조절 (앱 전용, 시스템 밝기와 독립)
- SharedPreferences 영속화 (uiPrefs "screen_brightness"), 앱 재시작 시 복원
- 다크/라이트 모드 토글 (Compose 테마, SharedPreferences 영속화, 시스템 상태바 아이콘 색상 자동 동기화)
- 글자 크기 1sp 단위 조정 (8sp~32sp, 기본 17sp, SharedPreferences 영속화)
- 폰트 선택 기능 (시스템 폰트 동적 열거, SharedPreferences 영속화)
- 이전/다음 파일 이동 (분권 시리즈 내비게이션)
- SiblingFileResolver: 같은 폴더 내 텍스트 파일을 이름순 정렬하여 이전/다음 파일 탐색
- 폴더 열기 시 첫 번째 텍스트 파일 자동 열기
- 좌하단 귀퉁이 탭 → 이전 파일, 우하단 귀퉁이 탭 → 다음 파일
- 파일 전환 시 위치 자동 저장/복원 (기존 file_lines 맵 활용)
- 텍스트 파일 필터: 확장자(txt/log/md/csv/json/xml/html) + text/* MIME
- 트리 URI 없이 단일 파일 열기 시 → "폴더 열기로 시리즈를 열어주세요" 안내 토스트
- 앱 재시작 시에도 마지막 파일·줄 번호 자동 복원
- 슬라이딩 윈도우 버퍼 (±15, 31페이지, 경계 4페이지 전 선행 로드, isActive guard)
- 지연 버퍼 시프트: 스크롤 정지 후에만 실행 (triggerPendingBufferShift, 500ms 쿨다운)
- 동적 페이지 크기 (화면에 완전히 보이는 줄 수 기반, 하단 부분 노출 줄 제외, ±1 히스테리시스)
- 렌더링 줄 기반 정확한 페이지 시스템 (RenderingLineIndex)
- TextMeasurer 기반 줄 wrap 측정 (함수 주입 패턴)
- Fling 스크롤 (AccelFlingBehavior)
- exponentialDecay(friction=1.0, threshold=500px/s): 빠른 감속 + 꼬리 컷
- 단일 fling: 6000~10000px/s (약 1.3~2.2페이지), MIN_INPUT_VELOCITY=200 이하 무시
- 연속 fling 가속: 600ms 내 반복 시 +0.25 스텝, 최대 1.5배
- 하단 상태바 (배터리, 시간, 파일명, 페이지, 위치%)
- 다국어 지원 (한국어 + 영어)
댓글 (3)
-
이이슬이
03.29 · 117.♡.97.207
-
Ccoldsalt
→ 이슬이 작성자
03.30 · 112.♡.250.136
관심주셔서 감사합니다. 딱히 지우지 않았는데 이상하네요. 혹시나 해서 지금 다시 링크를 갱신해 두었습니다. 다운이 안 되면 말씀주세요
-
이이슬이
→ coldsalt
03.30 · 117.♡.97.207
아.. 네.. 덕분에 다운로드 받았습니다..
저도 무협지나 판타지 소설 좋아해서 텍스트뷰어 이것저것 사용하고 있었거든요.. 감사합니다. 잘 쓰겠습니다.
댓글을 작성하려면 이 필요합니다.
아.. 다운로드 받으려 했는데... 삭제하셨나보네요..
다음 기회되면 꼭 다운받도록 할게요..