API 수준: 11
개발자의 경우 Android 3.0 플랫폼(HONEYCOMB
)을 Android SDK용 다운로드 가능한 구성요소로 사용할 수 있습니다. 다운로드 가능한 플랫폼에는 Android 라이브러리 및 시스템이 포함되어 있습니다.
이미지뿐 아니라 에뮬레이터 스킨 세트 등이 있습니다. 다운로드 가능한 플랫폼에는
제공합니다
개발자에게는 Android 3.0 플랫폼을 다운로드할 수 있는 구성요소입니다. 다운로드 가능한 플랫폼에는 Android 라이브러리 및 시스템 이미지와 더불어 에뮬레이터 스킨 등이 포함되어 있습니다. Android 3.0을 대상으로 개발 또는 테스트를 시작하려면 Android SDK Manager를 사용하여 플랫폼을 SDK에 다운로드하세요.
API 개요
아래 섹션에서는 이전 버전 이후 프레임워크 API의 새로운 기능과 변경사항을 비롯하여 Android 3.0의 개발자용 새로운 기능에 관한 기술적 개요를 제공합니다.
프래그먼트
프래그먼트는 활동의 고유한 요소를 자체 UI 및 수명 주기를 정의하는 독립형 모듈로 분리할 수 있는 새로운 프레임워크 구성요소입니다. 생성 시
프래그먼트를 사용하려면 Fragment
클래스를 확장하고 여러 수명 주기를 구현해야 합니다.
콜백 메서드를 지원합니다.Activity
그런 다음 여러 프래그먼트를 하나의 활동에 결합하여 각 창이 자체 수명 주기와 사용자 입력을 관리하는 다중 창 UI를 빌드할 수 있습니다.
UI를 제공하지 않고 프래그먼트를 사용할 수도 있습니다. 대신 활동이 실행되는 동안에만 발생하는 다운로드 진행률을 관리하는 등 프래그먼트를 활동의 작업자로 사용할 수 있습니다.
또한 다음 사항에 유의하세요.
- 프래그먼트는 독립형이며 여러 활동에서 재사용할 수 있습니다.
- 활동 내에서 프래그먼트를 추가, 삭제, 교체하고 애니메이션으로 표시할 수 있습니다.
- 액티비티가 관리하는 백 스택에 프래그먼트를 추가하여 프래그먼트가 변경될 때 상태를 보존하고 사용자가 여러 상태를 거쳐 뒤로 탐색할 수 있도록 할 수 있습니다.
- 대체 레이아웃을 사용한다면 레이아웃에 따라 프래그먼트를 혼합하여 화면 크기 및 방향에 따라
- 프래그먼트는 컨테이너 활동에 직접 액세스할 수 있으며 활동의 작업 표시줄에 항목을 추가할 수 있습니다(다음에서 설명).
활동에서 프래그먼트를 관리하려면 프래그먼트와 상호작용하기 위한 여러 API를 제공하는 FragmentManager
를 사용해야 합니다.
액티비티에서 프래그먼트를 찾고 백 스택에서 프래그먼트를 팝하여
확인할 수 있습니다
프래그먼트 추가 또는 삭제와 같은 트랜잭션을 실행하려면 FragmentTransaction
를 만들어야 합니다. 그런 다음 add()
, remove()
, replace()
와 같은 메서드를 호출할 수 있습니다. 모든 광고 단위를
트랜잭션에 관해 실행하려는 변경사항에 관한 자세한 내용은 commit()
를 호출해야 합니다. 그러면 시스템은 프래그먼트 트랜잭션을
합니다.
프래그먼트 사용에 관한 자세한 내용은 프래그먼트 문서를 참고하세요. 여러 개 API 데모 애플리케이션을 지원합니다.
작업 모음
작업 모음은 활동 창 상단에 있는 기존의 제목 표시줄을 대체합니다. 왼쪽 모서리에 애플리케이션 로고가 있고 옵션 메뉴로 이동합니다. 또한 작업 모음으로 다음 작업을 할 수 있습니다.
- 작업 모음에 '작업 항목'으로 메뉴 항목을 직접 추가합니다.
메뉴 항목의 XML 선언에 값이
"ifRoom"
인android:showAsAction
속성을 포함합니다. 공간이 충분하면 메뉴에서 항목이 작업 모음에 바로 표시됩니다. 그렇지 않으면 항목이 작업 모음 오른쪽의 메뉴 아이콘으로 표시됩니다. - 작업 항목을 위젯(예: 검색창)으로 대체하여 '작업 뷰'를 만듭니다.
메뉴 항목의 XML 선언에서
android:actionViewLayout
속성을 추가합니다. (레이아웃 리소스 또는 클래스 이름이 있는android:actionViewClass
속성) 위젯에 추가합니다. 항목이 표시되도록android:showAsAction
속성도 선언해야 합니다. 를 클릭합니다.) 작업 표시줄에 공간이 부족하고 항목이 더보기 메뉴를 사용하는 경우 일반 메뉴 항목처럼 동작하며 위젯을 표시하지 않습니다. - 애플리케이션 로고에 작업을 추가하고 맞춤 로고로 대체
애플리케이션 로고에는
android.R.id.home
ID가 자동으로 할당되며, 이 ID는 터치 시 시스템에서 활동의onOptionsItemSelected()
콜백에 전달합니다. 콜백 메서드에서 이 ID에 응답하기만 하면 애플리케이션의 '홈' 활동으로 이동하는 등의 작업을 실행할 수 있습니다.아이콘을 로고로 교체하려면 매니페스트 파일에서
android:logo
속성을 사용하여 애플리케이션 로고를 지정한 다음 활동에서setDisplayUseLogoEnabled(true)
를 호출합니다. - 프래그먼트의 백 스택을 통해 뒤로 이동하는 탐색경로 추가
- 프래그먼트를 탐색할 수 있는 탭 또는 드롭다운 목록 추가
- 테마 및 배경으로 작업 모음 맞춤설정
액션 바는 새로운 홀로그램 테마를 사용하는 모든 애플리케이션에
android:minSdkVersion
또는 android:targetSdkVersion
를 "11"
로 설정하는 경우에도 표준 화질을 사용할 수 있습니다.
작업 모음에 관한 자세한 내용은 작업 모음 문서를 참고하세요. 여러 개 API 데모 애플리케이션을 지원합니다.
시스템 클립보드
이제 애플리케이션에서 단순한 텍스트 외의 데이터를 시스템 전체 클립보드로 복사하고 클립보드에서 붙여넣을 수 있습니다. 클립된 데이터는 일반 텍스트, URI 또는 인텐트일 수 있습니다.
콘텐츠 제공자를 통해 사용자가 복사하려는 데이터에 대한 시스템 액세스 권한을 제공하면 사용자가 애플리케이션에서 복잡한 콘텐츠(예: 이미지 또는 데이터 구조)를 복사하여 이러한 유형의 콘텐츠를 지원하는 다른 애플리케이션에 붙여넣을 수 있습니다.
클립보드 사용을 시작하려면 getSystemService(CLIPBOARD_SERVICE)
를 호출하여 전역 ClipboardManager
객체를 가져옵니다.
항목을 클립보드에 복사하려면 하나 이상의 ClipData.Item
객체를 보유하고 각각 단일 항목을 설명하는 새 ClipData
객체를 만들어야 합니다. ClipData
객체 만들기
하나의 ClipData.Item
만 포함하는 경우 도우미 메서드 중 하나를 사용할 수 있습니다.
newPlainText()
, newUri()
및 newIntent()
등은 ClipData
(제공하는 ClipData.Item
).
ClipData
를 클립보드에 추가하려면 ClipboardManager
인스턴스의 setPrimaryClip()
에 전달합니다.
그러면 ClipboardManager
에서 getPrimaryClip()
를 호출하여 클립보드에서 파일을 읽을 수 있습니다 (붙여넣기 위해). 수신한 ClipData
를 처리하는 것은 복잡할 수 있으며 클립보드의 데이터 유형을 실제로 처리할 수 있는지 확인한 후에 붙여넣으려고 시도해야 합니다.
클립보드는 한 번에 클립된 데이터(ClipData
객체) 하나만 보유하지만 하나의 ClipData
는 여러 개의 ClipData.Item
를 포함할 수 있습니다.
자세한 내용은 복사 및 붙여넣기 문서를 참고하세요. 또한 API 데모에서 복사하여 붙여넣기에 대한 간단한 구현도 확인할 수 있습니다. 샘플 및 메모장 샘플의 더 완전한 구현을 참조하세요.
드래그 앤 드롭
새로운 API는 애플리케이션의 사용자 인터페이스에서 드래그 앤 드롭 작업을 간소화합니다. 드래그
작업은 ClipData
에서 실행되는 일종의 데이터 전송입니다.
한 곳에서 다른 곳으로 이동하는 것입니다. 드래그 작업의 시작점과 끝점은 View
이므로 드래그 앤 드롭 작업을 직접 처리하는 API는 View
클래스에 있습니다.
드래그 앤 드롭 작업에는 ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
, ACTION_DROP
와 같은 DragEvent
객체로 정의된 여러 드래그 작업으로 정의된 수명 주기가 있습니다. 드래그에 참여하려는 각 뷰
작업을 수신 대기할 수 있습니다
활동에서 콘텐츠 드래그를 시작하려면 startDrag()
를 호출합니다.
View
에 대해 ClipData
객체를 제공하여
드래그할 데이터, '그림자'를 용이하게 하는 View.DragShadowBuilder
사용자가 드래그하는 동안 손가락 아래에 표시되는 화면 및 Object
드래그 객체에 관한 정보를 객체를 수신할 수 있는 뷰와 함께 전달
View
에서 드래그 객체를 허용하려면('드롭' 수신) setOnDragListener()
를 호출하여 OnDragListener
에 뷰를 등록합니다. 뷰에서 드래그 이벤트가 발생하면 시스템은 OnDragListener
의 onDrag()
를 호출하며, 이 onDrag()
는 발생한 드래그 작업 유형(예: ACTION_DRAG_STARTED
, ACTION_DRAG_ENTERED
, ACTION_DROP
)을 나타내는 DragEvent
를 수신합니다. 드래그하는 동안 시스템은 드래그 아래에 있는 뷰의 onDrag()
를 반복적으로 호출하여 드래그 이벤트 스트림을 전송합니다. 수신 뷰는 DragEvent
에서 getAction()
를 호출하여 onDragEvent()
에 전달된 이벤트 유형을 문의할 수 있습니다.
참고: 드래그 이벤트가 ClipData
객체를 전달할 수 있지만 이는 시스템 클립보드와 관련이 없습니다. 드래그 앤 드롭
드래그한 데이터를 시스템 클립보드에 배치해서는 안 됩니다.
자세한 내용은 드래그 및 드롭 문서를 참고하세요. 또한 API 데모 애플리케이션 및 Honeycomb 갤러리 애플리케이션입니다.
앱 위젯
Android 3.0은 사용자에게 더욱 개선된 대화형 앱 위젯을 위한 여러 가지 새로운 위젯 클래스를 지원합니다.
다음을 포함한 홈 화면: GridView
, ListView
, StackView
, ViewFlipper
, AdapterViewFlipper
더 중요한 것은 새 RemoteViewsService
를 사용하여 콘텐츠 제공업체와 같은 원격 데이터에 의해 지원되는 GridView
, ListView
, StackView
과 같은 위젯을 사용하여 컬렉션이 포함된 앱 위젯을 만들 수 있다는 점입니다.
AppWidgetProviderInfo
클래스(<appwidget-provider>
요소로 XML에 정의됨)도 새로운 두 필드(autoAdvanceViewId
및 previewImage
)를 지원합니다. autoAdvanceViewId
필드를 사용하면
앱 위젯의 호스트에서 자동 진행해야 하는 앱 위젯 하위 뷰입니다. 이
previewImage
필드는
앱 위젯은 위젯 선택도구의 모양과 모습이며 사용자에게 표시됩니다. 이 필드가 제공되지 않으면 앱 위젯의 아이콘이 미리보기에 사용됩니다.
previewImage
필드에서 지정할 앱 위젯의 미리보기 이미지를 만들 수 있도록 Android Emulator에는 다음이 포함됩니다.
'위젯 미리보기'라는
애플리케이션을 실행합니다 미리보기 이미지를 만들려면 이 애플리케이션을 실행하고
앱 위젯을 만들고 미리보기 이미지가 표시되는 방식을 설정한 다음
애플리케이션의 드로어블 리소스에 배치합니다.
새로운 앱 위젯 기능의 구현은 StackView 앱 위젯 및 날씨 목록 위젯에서 확인할 수 있습니다. 애플리케이션을 실행할 수 있습니다
상태 표시줄 알림
Notification
API가 더 많은 콘텐츠가 포함된 상태 표시줄 알림을 지원하도록 확장되었으며, 새로운 Notification.Builder
클래스를 사용하면 Notification
객체를 쉽게 만들 수 있습니다.
새로운 기능에는 다음이 포함됩니다.
setLargeIcon()
를 사용하여 알림에서 큰 아이콘을 지원합니다. 일반적으로 사진을 제공한 사람의 연락처 사진을 보여주는 소셜 응용 프로그램 알림이나 미디어 앱이 앨범 썸네일을 표시할 수 있습니다.setTicker()
를 사용하여 상태 표시줄 티커에서 맞춤 레이아웃을 지원합니다.- 더 많은 대화형 알림 위젯을 위해
PendingIntent
가 있는 버튼을 포함하도록 맞춤 알림 레이아웃을 지원합니다. 예를 들어 알림을 통해 활동을 시작하지 않고도 음악 재생을 제어할 수 있습니다.
콘텐츠 로더
새 프레임워크 API는 Loader
클래스를 사용하여 데이터를 비동기식으로 로드합니다. 뷰 및 이미지 생성과 같은 UI 구성요소와
프래그먼트를 사용하여 작업자 스레드에서 데이터를 동적으로 로드합니다. CursorLoader
서브클래스는
ContentProvider
새 로더가 요청되거나 데이터가 변경될 때 콜백을 수신하도록 LoaderCallbacks
인터페이스를 구현한 다음 initLoader()
를 호출하여 활동 또는 프래그먼트의 로더를 초기화하기만 하면 됩니다.
자세한 내용은 로더 문서를 참조하세요. LoaderCursor 및 LoaderThrottle 샘플에서 로더를 사용하는 코드 예시를 확인할 수도 있습니다.
블루투스 A2DP 및 헤드셋 API
Android에는 이제 애플리케이션이 연결된 블루투스 A2DP 및 헤드셋 프로필 기기를 사용합니다. 예를 들어 애플리케이션은 음악을 듣기 위해 블루투스 헤드셋이 연결되었을 때 이를 식별하고 적절하게 사용자에게 알릴 수 있습니다. 애플리케이션은 공급업체별 AT 명령어의 브로드캐스트를 수신하고 연결된 기기의 상태(예: 연결된 기기의 배터리가 부족한 경우)를 사용자에게 알릴 수도 있습니다.
A2DP
또는 HEADSET
로 getProfileProxy()
를 호출하여 각 BluetoothProfile
를 초기화할 수 있습니다.
프로필 상수와 수신할 BluetoothProfile.ServiceListener
블루투스 클라이언트가 연결되거나 연결 해제되었을 때 콜백을 호출합니다.
애니메이션 프레임워크
완전히 새로운 유연한 애니메이션 프레임워크를 사용하면 모든 객체(뷰, 드로어블, 프래그먼트, 객체 등)의 임의 속성을 애니메이션으로 만들 수 있습니다. 이를 통해 애니메이션의 여러 측면을 정의할 수 있습니다.
- 시간
- 반복 횟수 및 동작
- 시간 보간 유형
- 애니메이터는 애니메이션을 함께, 순차적으로 또는 지정된 지연 후에 재생하도록 설정합니다.
- 프레임 새로고침 지연
기본적으로 객체의 int, float, 16진수 색상 값에 이러한 애니메이션 측면과 기타 측면을 정의할 수 있습니다. 즉, 객체에 이러한 유형 중 하나에 대한 속성 필드가 있으면
시간이 지남에 따라 값을 변경하여 애니메이션에 영향을 줄 수 있습니다. 다른 유형의 값에 애니메이션을 적용하려면
시스템에 TypeEvaluator
인터페이스를 구현하여 지정된 유형의 값을 계산하는 방법
속성 값에 애니메이션을 적용하는 데 사용할 수 있는 애니메이터는 ValueAnimator
와 ObjectAnimator
두 가지가 있습니다. ValueAnimator
는 애니메이션 값을 계산하지만 구체적인 값은 인식하지 못합니다.
애니메이션으로 표현되는 객체나 속성을 뜻합니다. 단순히 계산을 수행하고
업데이트를 수신 대기하고 자체 로직으로 데이터를 처리합니다. ObjectAnimator
는 ValueAnimator
의 서브클래스입니다.
를 사용하면 애니메이션할 객체와 속성을 설정할 수 있으며 모든 애니메이션 작업을 처리합니다.
즉, 애니메이션을 적용할 객체를 ObjectAnimator
에 제공하고
시간 경과에 따라 변경될 객체의 속성 및 속성에 적용할 값 집합
애니메이션을 시작할 수 있습니다.
또한 LayoutTransition
클래스는 활동 레이아웃 변경에 대한 자동 전환 애니메이션을 사용 설정합니다. 일부에 대해 전환을 사용 설정하려면
LayoutTransition
객체를 만들고 이를
setLayoutTransition()
를 호출하여 모든 ViewGroup
이렇게 하면 항목이 그룹에 추가되거나 삭제될 때마다 기본 애니메이션이 실행됩니다. 커스텀
LayoutTransition
에서 setAnimator()
를 호출하고 맞춤 Animator
를 제공합니다.
예: ValueAnimator
또는 ObjectAnimator
사용할 수 있습니다.
자세한 내용은 속성 애니메이션 문서를 참고하세요. API 데모 애플리케이션에서 애니메이션 API를 사용하는 여러 샘플을 확인할 수도 있습니다.
확장 UI 프레임워크
- ListView 및 GridView의 객관식 선택
setChoiceMode()
의 새로운CHOICE_MODE_MULTIPLE_MODAL
모드를 사용하면 사용자가 여러 항목을 선택할 수 있습니다.ListView
또는GridView
에서 가져올 수 있습니다. 작업 표시줄과 함께 사용하면 사용자가 여러 항목을 선택한 다음 작업 표시줄의 옵션 목록(선택형 작업 모드로 변환됨)에서 실행할 작업을 선택할 수 있습니다.객관식 선택을 사용 설정하려면
setChoiceMode(CHOICE_MODE_MULTIPLE_MODAL)
를 호출하고setMultiChoiceModeListener()
에MultiChoiceModeListener
를 등록합니다.사용자가 항목을 길게 누르면 작업 표시줄이 멀티 선택 작업 모드로 전환됩니다. 항목이 선택되면 시스템은
onItemCheckedStateChanged()
를 호출하여MultiChoiceModeListener
에 알립니다.객관식 선택의 예는 List15. Java 클래스에 대해 자세히 알아보세요.
- 뷰 변환을 위한 새로운 API
새로운 API를 사용하면 활동의 뷰에 2D 및 3D 변환을 쉽게 적용할 수 있습니다. 있습니다. 새로운 변환은 뷰의 뷰 속성을 정의하는 객체 속성 집합으로 레이아웃 위치, 방향, 투명도 등을 설정할 수 있습니다.
뷰 속성을 설정하는 새로운 메서드에는
setAlpha()
,setBottom()
,setLeft()
,setRight()
,setBottom()
,setPivotX()
,setPivotY()
,setRotationX()
,setRotationY()
,setScaleX()
,setScaleY()
,setAlpha()
등이 있습니다.일부 메서드에는 레이아웃에서 지정할 수 있는 상응하는 XML 특성도 있습니다. 기본 변환을 적용합니다. 사용 가능한 속성에는
translationX
,translationY
,rotation
,rotationX
,rotationY
,scaleX
,scaleY
,transformPivotX
transformPivotY
,alpha
입니다.이러한 새로운 뷰 속성 중 일부를 새 애니메이션 프레임워크와 함께 사용 (설명에 설명) 몇 가지 멋진 애니메이션을 뷰에 쉽게 적용할 수 있습니다. 예를 들어 y축에서 뷰를 회전하려면
ObjectAnimator
에View
, 'rotationY' 속성, 시작 및 종료 값을 제공합니다.Kotlin
ObjectAnimator.ofFloat(myView, "rotationY", 0f, 360f).apply { duration = 2000 start() }
자바
ObjectAnimator animator = ObjectAnimator.ofFloat(myView, "rotationY", 0, 360); animator.setDuration(2000); animator.start();
- 새로운 홀로그램 테마
표준 시스템 위젯과 전반적인 디자인이 새롭게 디자인되었으며 새로운 '홀로그램' 사용자 인터페이스 테마가 통합되었습니다. 시스템에서 새 테마를 적용합니다. 표준 스타일 및 테마 시스템을 사용합니다.
android:minSdkVersion
를 설정하여 Android 3.0 플랫폼을 타겟팅하는 모든 애플리케이션 또는android:targetSdkVersion
값을"11"
로 설정: 기본적으로 홀로그램 테마를 상속합니다. 그러나 애플리케이션이 자체 테마를 적용하는 경우에는 테마가 홀로그램 테마를 상속하도록 스타일을 업데이트하지 않는 한 홀로그램 테마입니다.홀로그램 테마를 개별 활동에 적용하거나 자체 테마 정의에서 상속하려면 여러 가지 새로운
Theme.Holo
테마 중 하나를 사용하세요. 애플리케이션이 Android 3.0 이전 버전과 호환되고 플랫폼에 따라 테마를 선택해야 합니다. 버전을 참조하세요. - 새 위젯
<ph type="x-smartling-placeholder">
- </ph>
AdapterViewAnimator
뷰 간에 전환할 때 애니메이션을 실행하는
AdapterView
의 기본 클래스입니다.AdapterViewFlipper
추가된 두 개 이상의 뷰 간에 애니메이션을 적용하는 간단한
ViewAnimator
입니다. 한 번에 하나의 하위 요소만 표시됩니다. 요청이 있으면 정기적으로 각 자식 간에 자동으로 전환할 수 있습니다.CalendarView
사용자가 날짜를 터치하여 캘린더에서 날짜를 선택하고 캘린더를 원하는 날짜로 스크롤하거나 플링할 수 있습니다. 위젯에서 사용할 수 있는 기간을 구성할 수 있습니다.
ListPopupWindow
호스트 뷰에 고정되고
EditText
뷰에 입력할 때 추천 목록과 같은 선택 목록을 표시합니다.NumberPicker
사용자가 사전 정의된 범위에서 숫자를 선택할 수 있도록 사용 설정합니다. 위젯은 입력란과 위쪽 및 아래쪽 버튼을 사용하여 숫자를 선택할 수 있습니다. 입력란을 터치하면 값을 스크롤하거나 다시 터치하여 현재 값을 직접 수정합니다. 또한 다음을 통해 색인 대신 해당 문자열이 표시되도록 위치를 문자열로 표시합니다. 있습니다.
PopupMenu
뷰에 고정된 모달 팝업 창에
Menu
를 표시합니다. 팝업은 공간이 있으면 앵커 뷰 아래에, 공간이 없으면 위에 표시됩니다. IME(소프트 키보드)가 표시되면 사용자가 메뉴를 터치할 때까지 팝업이 IME와 겹치지 않습니다.SearchView
지정된 기존의 검색 대화상자와 동일한 방식으로 추천 검색어를 표시합니다. 이 위젯은 작업 표시줄에 검색 위젯을 제공하는 데 특히 유용합니다. 자세한 내용은 검색 인터페이스 만들기를 참고하세요.
StackView
하위 요소를 3D 스택으로 표시하고 사용자가 롤로덱스처럼 뷰를 스와이프할 수 있는 뷰입니다.
그래픽
- 하드웨어 가속 2D 그래픽
이제 매니페스트 요소의
<application>
에서android:hardwareAccelerated="true"
를 설정하여 애플리케이션에 OpenGL 렌더기를 사용 설정할 수 있습니다. 요소 또는 개별<activity>
요소이 플래그는 애플리케이션이 더 빠르게 그리도록 하여 도움이 됩니다. 그 결과 애니메이션과 스크롤이 더 원활해지고 전반적인 성능과 사용자 상호작용에 대한 응답이 개선됩니다.
- 하드웨어 및 소프트웨어 레이어 지원 보기
기본적으로
View
에는 지정된 레이어가 없습니다.setLayerType()
또는layerType
속성을 사용하여 뷰가LAYER_TYPE_HARDWARE
및LAYER_TYPE_SOFTWARE
값으로 지정된 하드웨어 또는 소프트웨어 레이어에 의해 지원되도록 지정할 수 있습니다.하드웨어 레이어는 하드웨어별 텍스처(일반적으로 OpenGL 하드웨어의 프레임 버퍼 객체 또는 FBO)로 지원되며, 뷰 계층 구조에 하드웨어 가속이 사용 설정된 경우에만 Android의 하드웨어 렌더링 파이프라인을 사용하여 뷰가 렌더링되도록 합니다. 하드웨어가 가속이 꺼지면 하드웨어 레이어는 소프트웨어 레이어와 정확히 동일하게 작동합니다.
소프트웨어 레이어는 비트맵으로 지원되며 하드웨어 가속이 사용 설정되어 있더라도 Android의 소프트웨어 렌더링 파이프라인을 사용하여 뷰가 렌더링됩니다. 소프트웨어 계층은 영향을 받는 뷰 트리가 자주 업데이트되면 문제가 발생할 수 있습니다. 모든 업데이트 시 소프트웨어 레이어를 다시 렌더링해야 하므로 속도가 느려질 수 있습니다.
자세한 내용은
LAYER_TYPE_HARDWARE
및LAYER_TYPE_SOFTWARE
문서를 참고하세요. - Renderscript 3D 그래픽 엔진
Renderscript는 3D 장면을 빌드하기 위한 API를 모두 제공하는 런타임 3D 프레임워크입니다. 셰이더 언어로 사용할 수 있습니다. Renderscript를 사용하면 그래픽 작업과 데이터 처리를 가속화할 수 있습니다. Renderscript는 애플리케이션, 배경화면, 캐러셀 등에 고성능 3D 효과를 적용할 수 있습니다.
자세한 내용은 Renderscript를 사용한 3D 렌더링 및 계산 문서를 참고하세요.
미디어
- 타임랩스 동영상
Camcorder API는 이제 타임랩스 동영상을 녹화하는 기능을 지원합니다.
setCaptureRate()
는 프레임 속도를 캡처되어야 합니다. - 이미지 스트림을 위한 텍스처 지원
새
SurfaceTexture
를 사용하면 이미지 스트림을 OpenGL ES로 캡처할 수 있습니다. 만들 수도 있습니다Camera
인스턴스에setPreviewTexture()
를 호출하여 카메라에서 동영상 재생 또는 미리보기 프레임을 그릴SurfaceTexture
를 지정할 수 있습니다. - HTTP 라이브 스트리밍
이제 애플리케이션은 M3U 재생목록 URL을 미디어 프레임워크에 전달하여 HTTP 라이브를 시작할 수 있습니다. 스트리밍 세션입니다. 미디어 프레임워크는 적응형 비트 전송률을 비롯한 대부분의 HTTP 라이브 스트리밍 사양을 지원합니다. 다음에 대해 지원되는 미디어 형식 문서를 참조하세요. 자세히 알아보세요.
- EXIF 데이터
ExifInterface
에는 사진 조리개, ISO, 노출 시간에 관한 새 필드가 포함되어 있습니다. - 캠코더 프로필
새로운
hasProfile()
메서드와 여러 동영상 화질 프로필(예:QUALITY_1080P
,QUALITY_720P
,QUALITY_CIF
등)을 사용하면 캠코더 화질 옵션을 결정할 수 있습니다. - 디지털 미디어 파일 전송
이 플랫폼에는 USB를 통한 미디어/사진 전송 프로토콜(MTP/PTP)에 대한 기본 제공 지원이 포함되어 있어 사용자가 기기 간에 또는 호스트 컴퓨터로 모든 유형의 미디어 파일을 쉽게 전송할 수 있습니다. 개발자는 이 지원을 기반으로 사용자가 기기 간에 전송하거나 공유할 수 있는 리치 미디어 파일을 만들거나 관리할 수 있는 애플리케이션을 만들 수 있습니다.
- 디지털 권한 관리 (DRM)
디지털 확인 및 시행을 위한 새로운 확장 가능한 디지털 권한 관리 (DRM) 프레임워크 제공합니다. 다음과 같은 두 가지 아키텍처 레이어로 구현됩니다.
- 애플리케이션에 노출되고 Dalvik VM을 통해 실행되는 DRM 프레임워크 API 사용할 수 있습니다
- 프레임워크 API를 구현하고 DRM용 인터페이스를 노출하는 네이티브 코드 DRM 관리자 다양한 DRM 체계에 대한 권한 관리 및 복호화를 처리할 수 있습니다.
애플리케이션 개발자에게는 프레임워크가 보호된 콘텐츠의 관리를 간소화하는 추상화된 통합 API를 제공합니다. 이 API는 DRM 작업의 복잡성을 숨기고 보호되는 콘텐츠와 비보호 콘텐츠, 그리고 다양한 DRM에 걸쳐 스키마입니다.
기기 제조업체, 콘텐츠 소유자, 인터넷 디지털 미디어 제공업체의 경우 DRM 프레임워크의 플러그인 API는 콘텐츠 보호를 안전하게 시행하기 위해 선택한 DRM 스키마에 대한 지원을 Android 시스템에 추가하는 수단을 제공합니다.
미리보기 릴리스에서는 디지털 확인 및 시행을 위한 어떠한 기본 DRM 플러그인도 제공하지 않습니다. 제공합니다. 그러나 기기 제조업체는 기기와 함께 DRM 플러그인을 제공할 수 있습니다.
모든 DRM API는
android.drm
패키지에서 찾을 수 있습니다.
키보드 지원
- Control, Meta, Caps Lock, Num Lock, Scroll Lock 수정자가 지원됩니다. 자세한 내용은
META_CTRL_ON
및 관련 필드를 참고하세요. - Esc, Home, End, Delete 등의 키를 포함하여 전체 데스크톱 스타일 키보드를 지원합니다.
getKeyboardType()
를 쿼리하고KeyCharacterMap.FULL
를 확인하여 키 이벤트가 전체 키보드에서 발생하는지 확인할 수 있습니다. - 이제
TextView
에서 키보드 기반 잘라내기, 복사, 붙여넣고, 모두 선택, Ctrl+X, Control+C, Ctrl+V 및 Control+A입니다. 또한 PageUp/PageDown, Home/End, 키보드 기반 텍스트 선택 KeyEvent
는 키를 더 쉽게 확인할 수 있도록 몇 가지 새로운 메서드를 추가합니다. 올바르게 일관되게 일관되게 유지합니다.hasModifiers(int)
를 참고하세요.hasNoModifiers()
,metaStateHasModifiers()
,metaStateHasNoModifiers()
입니다.- 애플리케이션은
Activity
,Dialog
또는View
를 서브클래스로 분류하고 이를 구현하여 맞춤 단축키를 구현할 수 있습니다.onKeyShortcut()
입니다. 프레임워크는 키가 Ctrl 키와 결합될 때마다 이 메서드를 호출합니다. 옵션 메뉴를 만들 때 키보드를 등록할 수 있습니다. 각<item>
에android:alphabeticShortcut
또는android:numericShortcut
속성을 설정하여 단축키 요소 (또는setShortcut()
사용) - Android 3.0에는 새로운 '가상 키보드'가 포함되어 있습니다. ID가
KeyCharacterMap.VIRTUAL_KEYBOARD
인 기기 가상 키보드에는 입력 테스트를 위한 키 이벤트를 합성하는 데 유용한 데스크톱 스타일의 미국 키 맵이 있습니다.
분할 터치 이벤트
이전에는 한 번에 하나의 뷰만 터치 이벤트를 수신할 수 있었습니다. Android 3.0 여러 뷰와 창에 걸쳐 터치 이벤트를 분할하는 지원을 추가하여 여러 뷰에서 동시 터치 이벤트를 지원합니다.
분할 터치 이벤트는 애플리케이션이 타겟팅할 때 기본적으로 사용 설정됨
Android 3.0 즉, 애플리케이션이 android:minSdkVersion
또는 android:targetSdkVersion
속성의 값을 "11"
로 설정합니다.
그러나 다음 속성을 사용하면 특정 뷰 그룹 내 뷰와 창 전체에서 분할 터치 이벤트를 사용 중지할 수 있습니다.
- 뷰 그룹의
android:splitMotionEvents
속성 를 사용하면 레이아웃의 하위 뷰 간에 발생하는 분할 터치 이벤트를 사용 중지할 수 있습니다. 예를 들면 다음과 같습니다.<LinearLayout android:splitMotionEvents="false" ... > ... </LinearLayout>
이렇게 하면 선형 레이아웃의 하위 뷰가 터치 이벤트를 분할할 수 없습니다. 한 번에 하나의 뷰만 터치 이벤트를 수신할 수 있습니다.
android:windowEnableSplitTouch
스타일 속성 을 사용하면 활동 테마에 분할 터치 이벤트를 적용하여 여러 창에서 분할 터치 이벤트를 사용 중지할 수 있습니다. 또는 전체 애플리케이션에서 사용할 수 있습니다 예를 들면 다음과 같습니다.<style name="NoSplitMotionEvents" parent="android:Theme.Holo"> <item name="android:windowEnableSplitTouch">false</item> ... </style>
이 테마가
<activity>
또는<application>
에 적용되면 현재 활동 창 내의 터치 이벤트만 허용됩니다. 예를 들어 창에서 분할 터치 이벤트를 사용 중지하면 시스템 표시줄이 활동과 동시에 터치 이벤트를 수신할 수 없습니다. 이는 활동 내부의 뷰가 터치를 분할할 수 있는지에는 영향을 미치지 않습니다. 이벤트 - 기본적으로 활동은 여러 뷰에 걸쳐 터치 이벤트를 분할할 수 있습니다.테마 만들기에 관한 자세한 내용은 스타일 및 테마 적용을 참고하세요.
WebKit
- 새로운
WebViewFragment
클래스를 사용하여WebView
- 새
WebSettings
메서드: <ph type="x-smartling-placeholder">- </ph>
setDisplayZoomControls()
을(를) 통해 다음을 숨길 수 있음 사용자가 손가락 동작으로 확대/축소할 수 있도록 허용하면서 화면 확대/축소 컨트롤 (setBuiltInZoomControls()
를 설정해야 함)true
)을 입력합니다.- 새로운
WebSettings
메서드인setEnableSmoothTransition()
를 사용하면 화면 이동 및 확대/축소 시 원활한 전환을 사용할 수 있습니다. 사용 설정하면 WebView에서 솔루션을 선택합니다. 를 사용하여 성능을 최대화할 수 있습니다 (예를 들어 WebView의 콘텐츠가 WebView 실행 중에 표시됩니다.
- 새로운
WebView
메서드:onPause()
콜백: 모든 처리를 일시중지합니다. WebView와 연결된 객체입니다. 이는 WebView가 포그라운드에 있지 않을 때 불필요한 CPU 또는 네트워크 트래픽을 줄이는 데 유용합니다.onResume()
콜백: 처리를 재개합니다.onPause()
중에 일시중지된 WebView와 연결되어 있습니다.saveWebArchive()
를 사용하면 현재 보기를 기기에 웹 보관 파일로 저장합니다.showFindDialog()
는 다음 언어로 텍스트 검색을 시작합니다. 표시할 수 있습니다.
브라우저
브라우저 애플리케이션은 웹 애플리케이션을 지원하기 위해 다음 기능을 추가합니다.
- 미디어 캡처
HTML 미디어 캡처에 정의된 대로 브라우저에서 웹 애플리케이션이 오디오, 이미지 및 비디오 캡처에 액세스할 수 있도록 기기의 성능입니다. 예를 들어 다음 HTML은 사용자에게 업로드할 사진 촬영:
<input type="file" accept="image/*;capture=camera" />
또는
capture=camera
매개변수를 제외하면 사용자가 카메라로 새 이미지를 캡처하거나 기기에서 이미지를 선택할 수 있습니다(예: 갤러리 애플리케이션). - 기기 방향
기기 방향 이벤트에 정의된 대로 사양에 따라 웹 애플리케이션에서 정보를 제공하는 DOM 이벤트를 수신할 수 있도록 정보를 제공합니다.
기기 방향은 x, y, z축(도)으로 표현되며 모션은 가속도 및 회전 속도 데이터로 표현됩니다. 웹페이지는 이벤트 유형
"deviceorientation"
로window.addEventListener
를 호출하여 방향 이벤트를 등록하고"devicemotion"
이벤트 유형을 등록하여 모션 이벤트를 등록할 수 있습니다. - CSS 3D 변환
CSS 3D 변환 모듈 사양에 정의된 대로 브라우저는 CSS로 렌더링된 요소를 3차원으로 변환할 수 있습니다.
JSON 유틸리티
새 클래스인 JsonReader
및 JsonWriter
는 JSON 스트림을 읽고 쓰는 데 도움이 됩니다. 새 API는 메모리에서 문서를 조작하는 org.json
클래스를 보완합니다.
다음을 호출하여 JsonReader
의 인스턴스를 만들 수 있습니다.
생성자 메서드를 호출하고 JSON 문자열을 제공하는 InputStreamReader
을 전달합니다.
그런 다음 beginObject()
를 호출하여 객체 읽기를 시작하고
nextName()
로 키 이름을 지정하는 경우 메서드를 사용하여 값 읽기
nextString()
및 nextInt()
와 같은 유형에 따라 다르며 hasNext()
이 true인 동안 계속 실행합니다.
생성자를 호출하고 적절한 OutputStreamWriter
를 전달하여 JsonWriter
인스턴스를 만들 수 있습니다. 그런 다음
리더와 유사하게 name()
를 사용하여 속성 이름을 추가합니다.
적절한 value()
메서드를 사용하여 각
값으로 사용됩니다.
이러한 클래스는 기본적으로 엄격합니다. 각 클래스의 setLenient()
메서드는 허용되는 항목을 더 관대하게 구성합니다. 이 관대한
파싱 모드는 org.json
의 기본 파서와도 호환됩니다.
새로운 기능 상수
<uses-feature>
manfest 요소는 외부 주체 (예: Google Play)에
하드웨어 및 소프트웨어 기능을 기반으로 합니다. 이 릴리스에서 Android는
다음 새 상수를 제공합니다.
"android.hardware.faketouch"
선언하면 애플리케이션이 에뮬레이션된 터치스크린 (또는 그 이상) 에뮬레이션된 터치스크린을 제공하는 기기는 사용자 입력을 제공합니다. 터치스크린 일부를 에뮬레이션할 수 있는 시스템 기능을 제공합니다 이러한 입력 시스템의 예로는 컴퓨터를 구동하는 마우스 또는 리모컨이 커서를 올려놓습니다. 이러한 입력 시스템은 클릭, 위로, 드래그와 같은 기본 터치 이벤트를 지원합니다. 하지만 동작, 플링 등 좀 더 복잡한 입력 유형은 좀 더 어렵거나 모조 터치 기기에서는 불가능하며 멀티터치 동작은 절대 불가능합니다.
애플리케이션에 복잡한 동작이 필요하지 않고 에뮬레이션된 터치스크린이 있는 기기에서 애플리케이션이 필터링되지 않도록 하려면
<uses-feature>
요소로"android.hardware.faketouch"
를 선언해야 합니다. 이렇게 하면 애플리케이션을 최대한 많은 기기 유형에서 사용할 수 있으므로 에뮬레이션된 터치스크린 입력만 제공하는 앱도 포함합니다.터치 스크린이 포함된 모든 기기는 다음과 같은 이유로
"android.hardware.faketouch"
도 지원합니다. 터치 스크린 기능은 모조 터치 기능을 포함합니다. 따라서 터치 스크린을 사용하려면<uses-feature>
요소를 사용합니다.
새로운 권한
"android.permission.BIND_REMOTEVIEWS"
이 권한은
RemoteViewsService
구현을 위해<service>
매니페스트 요소에서 필수 권한으로 선언해야 합니다. 예를 들어RemoteViewsService
를 사용하여 컬렉션 뷰를 채우는 앱 위젯을 만드는 경우 매니페스트 항목은 다음과 같이 표시될 수 있습니다.<service android:name=".widget.WidgetService" android:exported="false" android:permission="android.permission.BIND_REMOTEVIEWS" />
새로운 플랫폼 기술
- 저장용량
- 온보드 eMMC 저장소를 사용 설정하는 ext4 파일 시스템 지원
- MTP 기기를 지원하는 FUSE 파일 시스템
- 키보드 및 USB 허브를 지원하기 위한 USB 호스트 모드 지원
- MTP/PTP 지원
- Linux 커널
<ph type="x-smartling-placeholder">
- </ph>
- 2.6.36으로 업그레이드됨
- Dalvik VM
- SMP를 지원하고 최적화하는 새로운 코드
- JIT 인프라의 다양한 개선사항
- 가비지 컬렉터 개선사항:
<ph type="x-smartling-placeholder">
- </ph>
- SMP에 맞게 조정됨
- 더 큰 힙 크기 지원
- 비트맵 및 바이트 버퍼의 통합 처리
- Dalvik 핵심 라이브러리
<ph type="x-smartling-placeholder">
- </ph>
- 새롭고 훨씬 더 빠른 NIO (최신 I/O 라이브러리) 구현
- 예외 메시지 개선
- 전체 정확성 및 성능 수정
API 차이점 보고서
Android 3.0 (API 레벨)의 모든 API 변경사항을 자세히 보려면 API 차이점 보고서를 참조하세요.
API 수준
Android 3.0 플랫폼은 업데이트된 버전의 프레임워크 API를 제공합니다. Android 3.0 API 정수 식별자가 할당됩니다. 11 — 즉 시스템 자체에 저장됩니다. 'API 수준'이라고 하는 이 식별자를 사용하면 애플리케이션이 호환되는지 여부를 정확하게 판단하기 위해 할 수 있습니다.
Android 3.0에 도입된 API를 애플리케이션에 사용하려면
Android 라이브러리에 대해 애플리케이션을 컴파일하고
지원합니다. 필요에 따라
android:minSdkVersion="11"
도 추가해야 합니다.
속성을 <uses-sdk>
요소에 추가합니다.
합니다. 애플리케이션이 Android 2.3 이상에서만 실행되도록 설계된 경우
이 속성을 선언하면 애플리케이션이 이전에
확인할 수 있습니다
자세한 내용은 API란? 레벨?