20141217

Android 5.0 Material Design 적용 시작

Lollipop 나온 지 얼마 안됐는데 벌써 디자인팀이 Material 요구. minSdk는 여전히 14(ICS)라 support-v7 appcompat 21 써야 함. 같이 시작해본 메모.

appcompat-v7:21 쓰면 Toolbar가 들어옴. ActionBar 대신 Toolbar를 레이아웃에 직접 붙이는 방식. 처음엔 어색하지만 확실히 더 커스텀 자유도가 높다.

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

Activity에서:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

테마는 Theme.AppCompat.Light.NoActionBar 로 바꾸고 colorPrimary/colorPrimaryDark/colorAccent를 styles.xml에 정의. Lollipop 이상에선 상태바도 자동으로 colorPrimaryDark로 바뀜.

Ripple 효과는 21 이상만. selector 만들때 v21/ 디렉토리에 ripple 버전 따로 놓고, 하위 버전엔 기존 state_pressed selector 두면 됨. 매번 이렇게 폴더 두 벌 관리하는거 귀찮다.

CardView, RecyclerView도 이번에 같이 가져옴. RecyclerView는 ListView 후속인데 처음엔 onBindViewHolder/onCreateViewHolder 구조가 귀찮더라. 근데 사용하다보면 ViewHolder 강제라 성능 함정을 덜 만듦.

아직 디자이너랑 협의중인 부분: FAB(플로팅 버튼) 지원 라이브러리가 공식은 안나왔음. 서드파티 쓰거나 직접 만들어야 함. 내년에 디자인 서포트 라이브러리 나올 거라는 소문이 있긴 한데 일단 직접.