지원 라이브러리 기능 가이드

참고: Android 9.0(API 수준 28)의 출시와 함께 Jetpack의 일부인 새로운 버전의 지원 라이브러리 AndroidX가 출시됩니다. AndroidX 라이브러리는 기존 지원 라이브러리를 포함하며 최신 Jetpack 구성요소 또한 포함합니다.

지원 라이브러리를 계속 사용할 수 있습니다. 이전 아티팩트(버전 27과 그 이전 버전 및 android.support.*로 패키징된 것)는 Google Maven에서 계속 사용할 수 있습니다. 그러나 모든 새 라이브러리 개발은 AndroidX 라이브러리에서 진행됩니다.

새로운 모든 프로젝트에서 AndroidX 라이브러리를 사용하는 것이 좋습니다. 또한, 기존 프로젝트를 AndroidX로 이전하는 것도 고려해 보세요.

지원 라이브러리는 기초 앱 구성요소에서부터 사용자 인터페이스 위젯, 미디어 핸들링 및 TV 앱 구성요소까지 앱 빌드를 위한 다양한 클래스를 제공합니다. 대부분 클래스는 이전 버전과 호환 가능하지만 그중 일부는 완전히 새로운 기능입니다.

이 문서에서는 지원 라이브러리에서 사용할 수 있는 기능의 중요한 부문과 앱 빌드 시 알아야 하는 특정 클래스에 관해 간략하게 살펴볼 수 있습니다.

앱 개발 프로젝트에 지원 라이브러리 코드를 추가하는 방법을 자세히 알아보려면 지원 라이브러리 설정을 참조하세요. 프로젝트에 특정 지원 라이브러리 패키지를 포함하는 방법에 관한 자세한 내용은 지원 라이브러리 패키지를 참조하세요.

앱 구성요소

지원 라이브러리 클래스는 플랫폼의 중요하고 핵심적인 기능에 대한 이전 버전과 호환되는 구현을 제공합니다. 이러한 구현은 일반적으로 플랫폼의 최신 출시에 추가된 새로운 메서드와 기능을 처리하기 위해 클래스의 이전 버전을 확장합니다. 이와 같은 클래스 중 일부는 프레임워크 API의 완전한 정적 구현입니다.

  • 활동
    • ActivityCompat - 런타임 권한 및 애니메이션 전환과 같은 활동의 주요 최신 기능을 이전 버전과 호환되도록 구현해 놓았습니다.
    • FragmentActivity - Fragment Loader API의 지원 라이브러리 버전을 사용하는 활동을 이전 버전과 호환되도록 구현해 놓았습니다.
    • AppCompatActivity - 이전 기기에 소재 색상 테마, 위젯 색조 및 앱 바 지원을 제공합니다. 이 클래스를 사용하려면 일관된 시각적 표현을 위한 Theme.AppCompat 테마를 사용해야 합니다.
  • Fragment - 프레임워크 Fragment 클래스의 독립적 구현을 제공합니다. 이 클래스는 FragmentActivity와 함께 사용해야 합니다.
  • ContextCompat - 권한 지원, 파일 액세스, 색상 정보 등 Context 클래스의 최신 출시에 도입된 기능을 지원합니다.
  • IntentCompat - 특정 활동을 선택 및 시작할 수 있는 메서드 등 Intent 클래스의 최신 출시에 도입된 기능을 지원합니다.
  • Loader - AsyncTaskLoaderCursorLoader 지원 클래스의 기본 클래스로, 프레임워크 Loader 클래스의 정적 구현을 제공합니다.
  • Preference - 이 클래스와 하위 클래스는 이전 버전과 호환되는 앱 설정 사용자 인터페이스 구현을 제공합니다.
  • ContentResolverCompat - 진행 중 쿼리를 취소할 수 있는 기능과 ContentResolver 클래스의 최신 출시에 도입된 기능(특히 query() 메서드)을 지원합니다.

사용자 인터페이스

이러한 지원 라이브러리 클래스는 핵심 사용자 인터페이스 위젯 및 동작의 구현을 제공하며 이전 기기에서 더욱 현대적인 앱 인터페이스를 만드는 데 도움이 됩니다. 이 위젯 중 일부는 지원 라이브러리를 통해서만 사용할 수 있습니다.

범용 레이아웃 컨테이너

이 지원 클래스는 다양한 디자인 사용 사례에 맞게 조정할 수 있는 사용자 인터페이스 컨테이너를 제공합니다.

  • RecyclerView - 높은 메모리 소비를 방지하는 전략을 이용하여 긴 목록을 표시하는 레이아웃을 만듭니다. 이 클래스로 큰 데이터 세트를 부분적으로 볼 수 있는 창을 만들어서 목록을 표시할 때 메모리를 많이 소비하는 것을 방지할 수 있습니다. RecyclerView 사용에 대한 자세한 내용은 Recycler View 가이드를 참조하세요.
  • ViewPager - 사용자가 데이터가 포함된 페이지를 좌우로 넘길 수 있는 레이아웃을 제공합니다.
  • GridLayout - 하위 요소가 사각형 그리드 내에 있고 인접한 셀의 임의적 범위와 유연한 공간 배포를 지원하는 레이아웃을 제공합니다. 이 클래스는 Android 4.0(API 수준 14)에 도입된 GridLayout 클래스의 이전 버전과 호환 가능합니다.
  • PercentFrameLayoutPercentRelativeLayout - 하위 뷰와 콘텐츠에 백분율 기반 치수와 여백을 지원하는 레이아웃을 제공합니다.

참고: ViewPager, RecyclerView, PercentFrameLayout, PercentRelativeLayout 클래스는 지원 라이브러리에서만 사용할 수 있습니다.

특수 목적 레이아웃 컨테이너

이러한 지원 클래스는 화면 가장자리에서 당겨올 수 있는 창 뷰, 슬라이딩 패널 및 목록 내 중첩 목록과 같은 특정 레이아웃 패턴과 호환되는 구현을 제공합니다.

  • DrawerLayout - 뷰 창 가장자리에서 당겨올 수 있는 상호작용 창 뷰를 구현하는 레이아웃을 만듭니다.
  • SlidingPaneLayout - 더 큰 화면에서는 확장되고 더 작은 화면에서는 줄어드는 등 다양한 크기의 화면에 맞게 매끄럽게 조정되는 레이아웃을 만들 수 있도록 앱 사용자 인터페이스의 최상위 레벨에서 사용하는 수평의 다중 패널 레이아웃을 제공합니다.
  • NestedScrollView - 다른 스크롤 뷰를 중첩할 수 있는 스크롤 레이아웃으로, 추가적 하위 요소 목록이 있는 항목으로 구성된 목록을 만들 수 있습니다. 이러한 중첩 목록은 상위 목록과 별개로 수평 또는 수직으로 스크롤하는 항목을 포함할 수 있습니다.
  • SwipeRefreshLayout - 손가락으로 스와이프하는 동작으로 목록 또는 다른 레이아웃의 데이터를 새로고침할 수 있도록 지원하는 레이아웃을 제공합니다.

뷰, 대화상자 및 위젯

지원 라이브러리는 레이아웃에서 콘텐츠를 표시하고 사용자 상호작용 요소를 제공하는 여러 클래스를 제공합니다.

  • CardView - 머티리얼 디자인 스타일 디스플레이 카드 만들기용 지원 라이브러리 맞춤 클래스입니다. 이 클래스는 둥근 모서리와 그림자가 포함된 FrameLayout을 기반으로 합니다.
  • AppCompatDialogFragment - DialogFragment를 확장하고 AppCompatDialog를 사용하여 일관된 스타일의 대화상자를 제공합니다.
  • NotificationCompat - 이전 버전과 호환되는 새로운 알림 스타일을 지원합니다.
  • SearchView - 사용자가 검색어를 입력하고 검색 제공자에게 요청을 제출하며 주로 앱 바에서 사용할 클래스를 제공합니다.

머티리얼 디자인

지원 라이브러리는 머티리얼 디자인 사용자 인터페이스 추천사항 구현을 위한 여러 클래스를 제공합니다.

  • CoordinatorLayout - 머티리얼 디자인 구성요소 및 동작을 통합하는 레이아웃을 위한 최상위 컨테이너를 제공합니다. 이 클래스는 1개 이상의 하위 뷰가 있는 특정 상호작용을 위한 컨테이너로 사용할 수도 있습니다.
  • AppBarLayout - 머티리얼 디자인의 앱 바 개념을 지닌 다양한 스크롤 기능을 구현합니다.
  • FloatingActionButton - 특별한 유형의 빠른 작업을 나타내기 위한 플로팅 버튼을 만듭니다. 이 머티리얼 디자인 사용자 인터페이스 요소는 앱 사용자 인터페이스 위에 플로팅되는 둥근 아이콘으로 표시됩니다. 자세한 내용은 플로팅 작업 버튼 추가하기를 참조하세요.
  • DrawerLayout - 앱의 기본 탐색 메뉴를 표시하는 UI 패널인 탐색 창을 만듭니다. 사용자가 손가락을 화면의 왼쪽 가장자리에서 스와이프하거나 앱 바의 창 아이콘을 탭하면 나타납니다. 자세한 내용은 탐색 창 만들기를 참조하세요.
  • TabLayout - 탭 페이지를 표시하는 레이아웃을 제공합니다. 이 위젯은 ViewPager 클래스와 함께 사용하도록 설계되었습니다.
  • Snackbar - 스낵바 팝업을 사용하여 작업에 관한 간단한 피드백을 표시하는 위젯을 제공합니다.

그래픽

android.support.graphics.drawable 패키지는 벡터 드로어블을 지원합니다. 벡터 드로어블을 사용하여 XML에서 정의된 여러 PNG 애셋을 1개의 벡터 그래픽으로 대체할 수 있습니다.

VectorDrawableCompat은 API 수준 9 이상에서 벡터 드로어블을 지원합니다. AnimatedVectorDrawableCompat은 API 수준 11 이상에서 애니메이션 벡터 드로어블을 지원합니다.

접근성

android.support.v4.view.accessibility 패키지는 API 수준 14 이상에 도입된 접근성 기능 구현을 위한 호환성 클래스를 제공합니다. 이 클래스는 접근성 서비스로 하여금 화면에 표시된 항목과 사용자 간의 상호작용을 관찰하고 식별하도록 허용합니다.

  • ExploreByTouchHelper - 뷰와 유사한 논리적 항목 모음을 나타내는 맞춤 에서 접근성을 지원합니다.

미디어 재생

Android 지원 라이브러리는 Android 4.1(API 수준 16) 이전 버전의 플랫폼을 실행하는 기기에 미디어 라우터 기능의 백포트를 지원합니다. 이러한 클래스로 연결된 Android 기기에 걸쳐서 미디어 재생을 제어합니다.

  • MediaRouter - 애플리케이션이 미디어 채널과 스트림의 라우팅을 현재 기기에서 외부 스피커 및 대상 기기로 제어할 수 있도록 합니다.
  • MediaControllerCompat - 앱이 진행 중인 미디어 세션과 상호작용할 수 있도록 합니다. 이 메커니즘을 통해 앱이 미디어 제어 버튼을 제공할 수 있으며 세션으로 다른 재생 명령어를 보낼 수 있습니다.
  • MediaSessionCompat - 다른 앱 또는 별도 기기에서 미디어 컨트롤러, 볼륨 키, 미디어 버튼 및 전송 제어와 상호작용할 수 있는 미디어 재생용 원격 제어 인터페이스를 제공합니다.

TV 앱

Android SDK 큰 화면과 이와 연관된 컨트롤러와 같은 폼 팩터를 지원하는 라이브러리를 제공합니다. 앱은 적절한 지원 라이브러리에 의존하여 광범위한 플랫폼 버전에 기능을 제공할 수 있으며 외부 화면, 스피커 및 기타 대상 기기에 콘텐츠를 제공할 수 있습니다.

Wear 앱

Android SDK는 시계를 지원하는 라이브러리를 제공합니다. 이 라이브러리는 시계 착용 시 사용자가 이용할 수 있는 기능을 앱에 제공합니다.

유틸리티

Android 지원 라이브러리는 프레임워크에 구현되지 않은 수많은 기능을 제공합니다. 이 라이브러리는 앱이 사용할 수 있는 다양한 유틸리티를 제공합니다.