Skip to content

[Feature]: 폴더 스켈레톤 로딩 UI와 Compose 마스크 구현#199

Draft
ugmin1030 wants to merge 16 commits into
developfrom
feature/Creating-a-folder-skeleton-loading-screen
Draft

[Feature]: 폴더 스켈레톤 로딩 UI와 Compose 마스크 구현#199
ugmin1030 wants to merge 16 commits into
developfrom
feature/Creating-a-folder-skeleton-loading-screen

Conversation

@ugmin1030

Copy link
Copy Markdown
Collaborator

📝 설명

해당 PR이 진행한 사항을 자세히 적어주세요.

  • 폴더 데이터를 불러오는 동안 정적 placeholder 10개를 표시하는 2열 LoadingFoldersGrid를 추가했습니다.
  • SkeletonFolderItem을 Figma 기준 비율에 맞춘 카드 배경, 하단 폴더 마스크, 원형 배지와 텍스트 pill 형태의 정적 회색 placeholder로 구성했습니다.
  • XML 마스크 의존 대신 GenericShape 기반의 Compose FolderMask를 추가하고, 기본 테마 스타일과 Preview를 제공하도록 변경했습니다.
  • 실제 폴더 카드도 Compose 마스크를 사용하도록 전환하고, 불투명 기본 채움 위에 Figma 외곽 그림자와 캡처한 폴더 레이어의 backdrop blur를 합성했습니다.
  • 카테고리 및 빈 폴더 카드가 공통 CategoryColorStyle 팔레트와 세로 그라데이션을 재사용하도록 정리했습니다.
  • Modifier.skeleton이 실제 콘텐츠의 alpha 영역에만 shimmer를 합성하도록 CompositingStrategy.OffscreenBlendMode.SrcIn 동작을 보강하고 관련 KDoc을 실제 구현에 맞게 정정했습니다.
  • 그림자 값을 재사용할 수 있는 ShadowStyle 확장과 링크 로딩 그리드 진입점 선언을 포함합니다.

✔️ PR 유형

어떤 변경 사항이 있나요?

  • 새로운 기능 추가
  • 버그 수정
  • CSS 등 사용자 UI 디자인 변경
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

📎 관련 이슈 번호

해당 PR과 관련된 이슈 번호를 적어주세요.

없음

🧪 검증

  • git diff --check
  • .\gradlew.bat :feature:file:compileDebugKotlin --console=plain
  • Android 12 이상에서 backdrop blur와 외곽 그림자 시각 확인
  • Android 12 미만에서 blur 미지원 경로 시각 확인

ugmin1030 added 16 commits July 15, 2026 00:15
- `skeleton` Modifier의 렌더링 방식을 `BlendMode.SrcIn` 기반으로 변경하여 실제 콘텐츠가 그려진 영역에만 효과가 적용되도록 개선
- `graphicsLayer`를 통해 `CompositingStrategy.Offscreen`을 설정하여 BlendMode가 다른 컴포넌트에 영향을 주지 않도록 격리
- `drawWithCache` 내부 로직을 수정하여 `drawContent()` 호출 후 그라데이션을 합성하는 구조로 변경
- 불필요한 프리뷰 컴포저블 및 미사용 Import 제거
- 애니메이션 라벨 명칭 변경 및 코드 포맷팅 정리
- 로딩 상태를 시각적으로 표현하기 위한 `SkeletonFolderItem` 컴포저블 신규 생성
- `BoxWithConstraints`와 스케일링 헬퍼 함수를 사용하여 컴포넌트 크기에 대응하는 유동적인 레이아웃 구현
- 세 개의 `Surface` 레이어에 회전값과 `skeleton` 모디파이어를 적용하여 겹쳐진 폴더 형태 구현
- 하단 마스크 이미지(`folder_mask`) 적용 및 디자인 확인을 위한 `SkeletonFolderItemPreview` 추가
- 로딩 상태를 표시하기 위한 `LoadingFoldersGrid` 컴포저블 신규 생성
- `SkeletonFolderItem`을 2열 그리드(`LazyVerticalGrid`) 형식으로 배치하여 스켈레톤 UI 구현
- `BoxWithConstraints`를 활용하여 화면 너비에 따른 아이템 간의 동적 가로 간격 계산 로직 적용
- 컴포넌트 확인을 위한 `LoadingFoldersGridPreview` 추가
- `SkeletonFolderItem` 컴포저블의 역할과 동작 방식, 매개변수에 대한 KDoc 추가
- 내부 크기 변환 헬퍼 함수 `s(dp: Dp)`에 대한 설명 주석 추가
- 컴포넌트 내부의 배경면(Surface) 및 폴더 마스크(Image) 레이어에 대한 설명 주석 추가
- `skeleton` 확장 함수에 동작 원리, 파라미터 설명 및 사용 예시를 포함한 KDoc 추가
- `CompositingStrategy.Offscreen` 및 `BlendMode.SrcIn` 사용 이유에 대한 내부 주석 구체화
- 주석 내 '컴포넌트' 용어를 '컴포저블'로 변경하여 Compose 용어 일관성 유지
- `elevation`, `shape`, `clip`, `ambientColor`, `spotColor` 속성을 포함하는 `ShadowStyle` 데이터 클래스 정의
- `ShadowStyle` 객체를 매개변수로 받아 그림자 효과를 적용하는 `Modifier.shadow` 확장 함수 구현
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: cce77ed9-bc45-49d4-8ea5-0c2c4620787d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/Creating-a-folder-skeleton-loading-screen

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant