홈 화면에서 Google 앱 위젯을 사용하여 더 빠르게 정보를 검색하세요. Show Android 스마트폰이나 태블릿에 표시되는 검색 위젯의 색상, 모양, 투명도를 변경할 수 있습니다. 검색 위젯 맞춤설정하기
검색창 기념일 로고 사용 또는 사용 중지하기기념일 로고가 홈 화면의 검색창에 표시되는 경우가 있습니다. 기념일 로고는 공휴일과 같은 특별 이벤트가 있을 때 일시적으로 표시됩니다.
검색 위젯 재설정하기위젯을 기본 설정으로 재설정할 수 있습니다. 위젯을 기본값으로 재설정하거나 Google 앱 데이터를 삭제하면 맞춤설정한 항목이 재설정됩니다.
검색 위젯 삭제하기스마트폰이나 태블릿에서 검색 위젯을 삭제할 수 있습니다. 앱, 바로가기, 위젯 또는 그룹을 삭제하는 방법 알아보기 오래된 기기를 사용하는 경우 스마트폰이나 태블릿에서 검색 위젯을 삭제하지 못할 수 있습니다. 앱 위젯은 다른 애플리케이션(예: 홈 화면)에 삽입되어 주기적인 업데이트를 받을 수 있는 소형 애플리케이션 뷰입니다. 이러한 뷰는 사용자 인터페이스에서 위젯이라고하며 앱 위젯 공급자를 사용하여 게시할 수 있습니다. 다른 앱 위젯을 포함할 수 있는 애플리케이션 구성요소를 앱 위젯 호스트라고 합니다. 아래 스크린샷은 음악 앱 위젯을 보여줍니다. 이 문서에서는 앱 위젯 공급자를 사용하여 앱 위젯을 게시하는 방법을 설명합니다. 앱 위젯을 호스팅하기 위해 나만의 참고: 앱 위젯을 디자인하는 방법에 관한 자세한 내용은 앱 위젯 개요를 읽어보세요. 기본 사항앱 위젯을 만들려면 다음이 필요합니다. AppWidgetProviderInfo 객체앱 위젯의 레이아웃, 업데이트 빈도, AppWidgetProvider 클래스 등 앱 위젯의 메타데이터를 설명합니다. XML로 정의해야 합니다.AppWidgetProvider 클래스 구현브로드캐스트 이벤트를 기반으로 앱 위젯과 프로그래매틱 방식으로 접속할 수 있는 기본적인 방법을 정의합니다. 이를 통해 앱 위젯이 업데이트, 사용 설정, 사용 중지, 삭제될 때 브로드캐스트를 수신하게 됩니다.레이아웃
보기 XML로 정의된 앱 위젯의 초기 레이아웃을 정의합니다.또한 앱 위젯 구성 활동을 구현할 수 있습니다. 사용자가 앱 위젯을 추가할 때 실행되고 작성 시 사용자가 앱 위젯 설정을 수정할 수 있도록 하는 선택적 다음 섹션에서는 이러한 각 구성요소를 설정하는 방법을 설명합니다. manifest에서 앱 위젯 선언먼저 애플리케이션의 <receiver android:name="ExampleAppWidgetProvider" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /> </receiver>
예: <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="40dp" android:minHeight="40dp" android:updatePeriodMillis="86400000" android:previewImage="@drawable/preview" android:initialLayout="@layout/example_appwidget" android:configure="com.example.android.ExampleAppWidgetConfigure" android:resizeMode="horizontal|vertical" android:widgetCategory="home_screen"> </appwidget-provider> 다음은
앱 위젯 레이아웃 만들기앱 위젯의 초기 레이아웃을 XML로 정의하고 프로젝트의 레이아웃에 익숙한 경우 간단히 앱 위젯 레이아웃을 만들 수 있습니다. 하지만 앱 위젯 레이아웃은 모든 종류의 레이아웃 또는 뷰 위젯을 지원하지는 않는 RemoteViews 객체(및 결과적인 앱 위젯)는 다음과 같은 레이아웃 클래스를 지원할 수 있습니다.
다음과 같은 위젯 클래스도 지원할 수 있습니다.
이러한 클래스의 하위 항목은 지원되지 않습니다. RemoteViews는 런타임에 레이아웃 리소스를 느리게 확장하는 데 사용할 수 있는 보이지 않고 크기가 0인 뷰인 앱 위젯에 여백 추가위젯은 일반적으로 화면 가장자리까지 확장되지 않아야 하고 시각적으로 다른 위젯과 일치하지 않아야 하므로 위젯 프레임의 모든 면에 여백을 추가해야 합니다. Android 4.0 기준으로, 위젯 프레임과 앱 위젯의 경계 상자 사이에는 사용자 홈 화면의 다른 위젯 및 아이콘과 더 잘 정렬되도록 자동으로 패딩이 추가됩니다. 이 권장되는 동작을 활용하려면 애플리케이션의 targetSdkVersion을 14 이상으로 설정하세요. 플랫폼의 이전 버전에 적용된 맞춤 여백이 있고 Android 4.0 이상을 위한 추가 여백이 없는 단일 레이아웃을 쉽게 작성할 수 있습니다.
또 한 가지 방법은 기본적으로 나인 패치 배경 애셋에 추가 여백을 빌드하고 API 레벨 14 이상의 경우 여백이 없는 다양한 나인 패치를 제공하는 것입니다.
onUpdate() AppWidgetProviderInfo의 updatePeriodMillis 속성에 의해 정의된 간격으로 앱 위젯을 업데이트하기 위해 호출됩니다(위의 AppWidgetProviderInfo 메타데이터 추가 참조). 이 메서드는 사용자가 앱 위젯을 추가할 때도 호출되므로 뷰의 이벤트 핸들러 정의와 같은 필수 설정을 실행하고 필요한 경우 임시 Service 를 시작해야 합니다. 하지만 구성 활동을 선언한 경우
사용자가 앱 위젯을 추가할 때 이 메서드가 호출되지 않지만 후속 업데이트의 경우 호출됩니다. 구성이 완료된 경우 구성 활동에서 첫 번째 업데이트를 실행해야 합니다. 아래의 앱 위젯 구성 활동 만들기를 참조하세요. onAppWidgetOptionsChanged() 위젯이 처음으로 배치될 때와 위젯의 크기가 조절될 때 호출됩니다. 이 콜백을 사용하여 위젯의 크기 범위를 기반으로 콘텐츠를 표시하거나 숨길 수 있습니다. 다음이 포함된 Bundle 을 반환하는 getAppWidgetOptions() 를 호출하여 크기 범위를 가져옵니다.
onDeleted(Context, int[]) 앱 위젯이 앱 위젯 호스트에서 삭제될 때마다 호출됩니다.onEnabled(Context) 앱 위젯의 인스턴스가 처음으로 생성될 때 호출됩니다. 예를 들어 사용자가 앱 위젯의 인스턴스를 두 개 추가하는 경우 처음에만 호출됩니다. 새 데이터베이스를 열거나 모든 앱 위젯 인스턴스에 한 번만 발생해야 하는 다른 설정을 실행해야 하는 경우 여기에서 실행하세요.onDisabled(Context) 앱 위젯의 마지막 인스턴스가 앱 위젯
호스트에서 삭제될 때 호출됩니다. 여기에서 임시 데이터베이스 삭제와 같이 onEnabled(Context) 에서 실행된 모든 작업을 정리해야 합니다.onReceive(Context, Intent) 모든 브로드캐스트에서 위의 각 콜백 메서드 이전에 호출됩니다. 기본 AppWidgetProvider 구현은 모든 앱 위젯 브로드캐스트를 필터링하고 위 메서드를 적절하게 호출하므로 일반적으로 이 메서드를 구현할 필요가 없습니다.AndroidManifest의 가장 중요한 AppWidgetProvider 콜백은 구성 활동을 사용하지
않는 한 각 앱 위젯이 호스트에 추가될 때 호출되므로
이 AppWidgetProvider는 참고: ExampleAppWidgetProvider.java 샘플 클래스도 참조하세요. 앱 위젯 브로드캐스트 인텐트 수신
앱 위젯 고정Android 8.0(API 레벨 26) 이상을 실행하는 기기에서 고정된 바로가기를 만들 수 있는 런처를 사용하여 앱 위젯을 런처에 고정할 수도 있습니다. 고정된 바로가기와 마찬가지로 고정된 위젯을 사용하면 앱의 특정 작업에 액세스할 수 있습니다. 앱에서 다음 단계를 완료하여 지원되는 런처에 위젯을 고정하도록 시스템에 요청할 수 있습니다.
참고: 시스템에서 지원되는 런처에 위젯을 고정했는지 여부를 앱에 알리지 않아도 되는 경우 앱 위젯 구성 활동 만들기사용자가 새 앱 위젯을 추가할 때 설정을 구성하도록 하려면 앱 위젯 구성 활동을 만드세요. 이 구성
활동은 Android manifest 파일에 일반 활동으로 선언해야 합니다. 하지만 <activity android:name=".ExampleAppWidgetConfigure"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/> </intent-filter> </activity> 또한 AppWidgetProviderInfo XML 파일에서 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" ... android:configure="com.example.android.ExampleAppWidgetConfigure" ... > </appwidget-provider> 활동은 패키지 범위 외부에서 참조되므로 정규화된 네임스페이스로 선언됩니다. 활동을 선언한 후 구성 작업을 시작할 수 있습니다. 이제 실제 활동만 있으면 됩니다. 하지만 활동을 구현할 때 기억해야 할 두 가지 중요한 사항이 있습니다.
구성에서 결과를 반환하고 앱 위젯을 업데이트하는 방법의 예는 다음 섹션의 코드 스니펫을 참조하세요. 구성 활동에서 앱 위젯 업데이트App 위젯이 구성 활동을 사용하는 경우 구성이 완료된 후 앱 위젯을 업데이트하는 것은 활동의 책임입니다. 다음은 앱 위젯을 제대로 업데이트하고 구성 활동을 닫는 절차를 요약한 것입니다.
팁: 구성 활동이 처음 열리면 위의 5 단계에 표시된 대로 활동 결과를 EXTRA_APPWIDGET_ID와 함께 RESULT_CANCELED로 설정합니다. 이러한 방식으로 사용자가 끝에 도달하기 전에 활동을 취소하면 앱 위젯 호스트에 구성이 취소되었음을 알리고 앱 위젯이 추가되지 않습니다. 예를 보려면 ApiDemos의 ExampleAppWidgetConfigure.java 샘플 클래스를 참조하세요. 미리보기 이미지 설정Android
3.0에서 앱 위젯의 미리보기를 지정하는 다음 방법으로 XML에서 이 설정을 지정합니다. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" ... android:previewImage="@drawable/preview"> </appwidget-provider> Android Emulator에는 앱 위젯에서 ( 컬렉션이 포함된 앱 위젯 사용Android 3.0에서 컬렉션이 포함된 앱 위젯이 도입되었습니다. 이러한 종류의 앱
위젯에서는 ListView 항목을 세로로 스크롤되는 목록으로 표시하는 뷰. Gmail 앱 위젯의 예를 참조하세요. GridView 항목을 2차원으로 스크롤되는 그리드로 표시하는 뷰. 북마크 앱 위젯의 예를 참조하세요.StackView 사용자가 전면 카드를 위/아래로 돌려 이전/다음 카드를 볼 수 있는 스택형 카드 뷰(예: rolodex). 예를 들어 YouTube
및 도서 앱 위젯이 있습니다. AdapterViewFlipper 두 개 이상의 뷰 간을 애니메이션하는 어댑터 지원 단순 ViewAnimator . 한 번에 하나의 하위 요소만 표시됩니다.위에서 설명한 바와 같이 이러한 컬렉션 뷰는 원격 데이터에 의해 지원되는 컬렉션을 표시합니다. 즉
샘플 애플리케이션이 섹션의 발췌한 코드는 StackWidget 샘플에서 가져온 것입니다.
이 샘플은
컬렉션이 포함된 앱 위젯 구현컬렉션이 포함된 앱 위젯을 구현하려면 모든 앱 위젯을 구현하는 데 사용하는 기본 단계를 따릅니다. 다음 섹션에서는 컬렉션이 포함된 앱 위젯을 구현하기 위해 실행해야 하는 추가 단계를 설명합니다. 컬렉션이 포함된 앱 위젯의 manifest manifest에서 앱 위젯 선언에 나열된 요구사항 외에 컬렉션이 포함된 앱 위젯이 <service android:name="MyWidgetService" ... android:permission="android.permission.BIND_REMOTEVIEWS" />
컬렉션이 포함된 앱 위젯의 레이아웃앱 위젯 레이아웃 XML 파일의 기본 요구사항은 컬렉션 뷰 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <StackView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/stack_view" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:loopViews="true" /> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/empty_view" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@drawable/widget_item_background" android:textColor="#ffffff" android:textStyle="bold" android:text="@string/empty_view_text" android:textSize="20sp" /> </FrameLayout> 빈 뷰는 빈 뷰가 빈 상태를 나타내는 컬렉션 뷰의 동위 요소여야 합니다. 전체 앱 위젯의 레이아웃 파일 외에 컬렉션에 포함된 각 항목의 레이아웃(예를 들어 책 컬렉션에 포함된 각 책의 레이아웃)을 정의하는 다른 레이아웃 파일을 만들어야 합니다 모든 항목이 동일한 레이아웃을 사용하므로 StackWidget 샘플에는 레이아웃 파일이 컬렉션이 포함된 앱 위젯의 AppWidgetProvider 클래스일반 앱 위젯의 경우와 마찬가지로 예를 들어 다음은 StackWidget 샘플이
RemoteViewsService 클래스데이터 유지위에 설명된 대로 구체적으로 다음 단계를 실행해야 합니다.
서비스의 단일 인스턴스나 인스턴스에 포함된 데이터에 의존하여 유지할 수 없습니다. 따라서 정적인 경우가 아닌 한
RemoteViewsFactory 인터페이스
처음으로 팩토리를 만들 때 시스템에서는 다음은 StackWidget 샘플의
개별 항목에 동작 추가위 섹션에서는 앱 위젯 컬렉션에 데이터를 바인딩하는 방법을 보여줍니다. 하지만 컬렉션 뷰의 개별 항목에 동적 동작을 추가하려면 어떻게 해야 하나요?
AppWidgetProvider 클래스 사용에 설명된 대로 일반적으로 이 섹션에서는
StackWidget 샘플을 사용하여 개별 항목에 동작을 추가하는 방법을 설명합니다. StackWidget sample 샘플에서 사용자가 상단 뷰를 터치하면 앱 위젯에서
참고: StackWidget 샘플 은 브로드캐스트를 사용하지만 일반적으로 앱 위젯은 간단히 이와 같은 시나리오에서 활동을 시작합니다. 대기중 인텐트 템플릿 설정
이 클래스는 사용자가 뷰를 터치할 때 전송되는 브로드캐스트도 수신하며,
채우기 인텐트 설정
컬렉션 데이터를 최신 상태로 유지다음 그림은 업데이트가 발생할 때 컬렉션을 사용하는 앱 위젯에서 발생하는 흐름을 보여줍니다. 앱 위젯 코드가 컬렉션을 사용하는 앱 위젯의 한 가지 기능은 사용자에게 최신 콘텐츠를 제공하는 것입니다. 사용자에게 받은편지함을 스냅샷으로 보여주는 Android 3.0 Gmail 앱 위젯을 예로 들어 보겠습니다. 이 작업을 실행하려면 |