피드로 돌아가기
Visible-Edge Card Carousel with Swiper (ArkUI) — prevMargin/nextMargin + Scale Transition
Dev.toDev.to
Frontend

ArkUI Swiper 제어를 통한 Dynamic Scale Carousel 구현

Visible-Edge Card Carousel with Swiper (ArkUI) — prevMargin/nextMargin + Scale Transition

HarmonyOS2026년 4월 23일4intermediate

Context

단순 페이지 전환을 넘어 인접 카드의 일부가 노출되는 Visible-Edge 효과와 동적인 Scale Transition 구현 필요성 대두. 기본 Swiper 컴포넌트만으로는 드래그 거리에 따른 실시간 스케일 보간 및 정교한 시각적 피드백 구현에 한계 존재.

Technical Solution

  • prevMargin 및 nextMargin 설정을 통한 인접 아이템의 부분 노출 구조 설계
  • onGestureSwipe 이벤트의 currentOffset 기반 드래그 거리 산출 및 실시간 Scale 보간 로직 적용
  • MAX_SCALE(0.7)과 MIN_SCALE(0.5) 사이의 델타 값을 계산하여 현재/이전/다음 카드의 크기를 동적으로 제어
  • onAnimationStart 및 onAnimationEnd 라이프사이클을 활용한 스케일 상태의 스냅 및 초기화 처리
  • displayMode(STRETCH)와 cachedCount 최적화를 통한 렌더링 성능 확보 및 메모리 효율 증대
  • customContentTransition API를 통한 프레임 단위의 인덱스 및 포지션 기반 스케일 계산 구조 제안

- 드래그 기반 애니메이션 구현 시 DRAGGING_MAX_DISTANCE 설정을 통한 사용자 입력 감도 최적화 검토 - 고해상도 이미지 포함 시 per-frame 콜백 내 연산 최소화로 Jank 현상 방지 - Wearable 등 특수 폼팩터 적용 시 화면 엣지 Clipping 방지를 위한 Margin 및 Scale Delta 값 재조정 - Indicator와 Margin 간의 시각적 충돌 여부 확인 및 UI 배치 최적화

원문 읽기