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

참고: 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 - 이전 기기에 Material 색상 테마, 위젯 색조 조정, 앱 바 지원을 제공합니다. 이 클래스를 사용하려면 일관된 시각적 표현을 위해 Theme.AppCompat 테마를 사용해야 합니다.
  • Fragment - 프레임워크 Fragment 클래스의 독립형 구현을 제공합니다. 이 클래스는 FragmentActivity와 함께 사용해야 합니다.
  • ContextCompat - 권한 지원, 파일 액세스, 색상 정보 등 Context 클래스의 최신 출시에 도입된 기능을 지원합니다.
  • IntentCompat - 특정 활동을 선택하고 시작하는 메서드를 비롯하여 Intent 클래스의 최신 버전에 도입된 기능을 지원합니다.
  • Loader - 프레임워크 Loader 클래스의 정적 구현을 제공하며 AsyncTaskLoaderCursorLoader 지원 클래스의 기본 클래스입니다.
  • 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 - Material Design 스타일 디스플레이 카드를 만들기 위한 지원 라이브러리 맞춤 클래스입니다. 이 클래스는 둥근 모서리와 그림자가 있는 FrameLayout을 기반으로 합니다.
  • AppCompatDialogFragment - DialogFragment를 확장하고 AppCompatDialog를 사용하여 일관된 스타일의 대화상자를 제공합니다.
  • NotificationCompat - 이전 버전과 호환되는 새로운 알림 스타일을 지원합니다.
  • SearchView - 사용자가 검색어를 입력하고 검색 제공자에게 요청을 제출할 수 있는 클래스를 제공합니다. 이 클래스는 주로 앱 바에서 사용할 목적으로 사용됩니다.

Material Design

지원 라이브러리는 Material Design 사용자 인터페이스 권장사항을 구현하기 위한 여러 클래스를 제공합니다.

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

그래픽

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

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 지원 라이브러리는 프레임워크에 내장되어 있지 않은 다양한 기능을 제공합니다. 이러한 라이브러리는 앱에서 사용할 수 있는 다양한 유틸리티를 제공합니다.