4.5 KiB
4.5 KiB
PRD: XML 디자인 토큰 리소스 추가
1. Overview
XML 레이아웃에서 재사용할 수 있는 색상, Spacing, Radius 디자인 토큰 리소스를 추가한다.
2. Problem
- 현재 색상은
colors.xml에 값 중심 이름으로 많이 정의되어 있어 신규 디자인 시스템 팔레트를 의미 단위로 재사용하기 어렵다. - Spacing과 Radius는 공통
dimen리소스로 중앙화되어 있지 않아 XML마다 직접dp값을 지정해야 한다. - 현재 프로젝트는 Compose가 아니라 XML 레이아웃 중심이므로 XML 리소스로 토큰을 제공해야 한다.
3. Goals
- Primary Color
soda_50부터soda_900까지 XML color 리소스로 제공한다. - Semantic Color
red_50부터red_400,green_50부터green_400까지 XML color 리소스로 제공한다. - Gray Color
gray_50부터gray_900까지 XML color 리소스로 제공한다. - Spacing
4, 6, 8, 12, 14, 16, 20, 24, 28, 32, 48을 XML dimen 리소스로 제공한다. - Radius
4, 8, 14를 XML dimen 리소스로 제공한다.
4. Non-Goals
- 기존 XML 레이아웃의 색상, margin, padding, corner 값을 일괄 교체하지 않는다.
- Compose Theme, Kotlin 디자인 토큰 객체, 신규 UI 컴포넌트를 추가하지 않는다.
- 요청된 토큰 외 추가 색상, spacing, radius 값을 정의하지 않는다.
- 기존
color_...리소스 이름을 삭제하거나 변경하지 않는다.
5. Target Users
- XML 레이아웃을 작성하거나 유지보수하는 Android 개발자.
6. User Stories
- 개발자는 신규 XML 레이아웃에서
@color/soda_400처럼 의미 있는 색상 토큰을 사용하고 싶다. - 개발자는 XML에서
@dimen/spacing_16,@dimen/radius_8처럼 공통 간격과 라운드 값을 재사용하고 싶다.
7. Core Features
XML Color Tokens
app/src/main/res/values/colors.xml에 요청된 디자인 시스템 색상 토큰을 추가한다.
Requirements
- Primary Color
soda_50:#E6F9FFsoda_100:#B8EEFDsoda_200:#85E1FBsoda_300:#4FD2F9soda_400:#00BDF7soda_500:#00A0DFsoda_600:#0081C2soda_700:#006BA4soda_800:#004F7Fsoda_900:#052742
- Accent
red_50:#FFF1F2red_100:#FFD7D9red_200:#FFB3B7red_300:#FF858Bred_400:#FF4C3C
- Point
green_50:#F5FBEFgreen_100:#E9FADBgreen_200:#C0F595green_300:#9FFB56green_400:#73FF01
- Gray Color
gray_50:#FAFAFAgray_100:#F2F2F2gray_200:#E2E2E2gray_300:#CCCCCCgray_400:#B5B5B5gray_500:#959595gray_600:#787878gray_700:#494949gray_800:#343434gray_900:#202020
XML Spacing and Radius Tokens
app/src/main/res/values/dimens.xml에 spacing/radius 토큰을 추가한다.
Requirements
- Spacing:
spacing_4,spacing_6,spacing_8,spacing_12,spacing_14,spacing_16,spacing_20,spacing_24,spacing_28,spacing_32,spacing_48 - Radius:
radius_4,radius_8,radius_14 - 각 값은 이름의 숫자와 동일한
dp값을 사용한다.
Edge Cases
- 기존 레이아웃에 새 토큰을 자동 적용하지 않으므로 화면 변화는 발생하지 않는다.
- 기존
colors.xml의 값 중심 색상 리소스는 유지한다.
8. UX / UI Expectations
- 기존 화면은 변경되지 않는다.
- 신규 XML 작성 시 색상, spacing, radius 값을 의미 있는 리소스 이름으로 재사용할 수 있다.
Usage Samples
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/spacing_16"
android:textColor="@color/soda_400" />
<corners android:radius="@dimen/radius_8" />
9. Technical Constraints
- XML 리소스만 추가한다.
- 기존 XML 레이아웃, Kotlin 코드, Compose 관련 파일은 변경하지 않는다.
- 색상 토큰은 기존 색상 리소스 파일인
app/src/main/res/values/colors.xml에 추가한다. - Spacing과 Radius는 새
app/src/main/res/values/dimens.xml에 추가한다.
10. Metrics
- 요청된 color 토큰 30개가 모두 존재한다.
- 요청된 spacing 토큰 11개와 radius 토큰 3개가 모두 존재한다.
- Android 리소스 병합 및 디버그 빌드가 성공한다.
11. Open Questions
- 없음. 현재 요청 범위는 XML 리소스 추가로 한정한다.