<안드로이드/Android> 앱위젯(AppWidget) PART1
앱 위젯은 '홈 스크린'과 같은 다른 어플리케이션에 내장된 '작은 크기의 어플리케이션 뷰'다.
그리고, 이 앱위젯은 주기적으로 최신 정보를 반영하기 위해 업데이트 된다. 앱 위젯은 보통 유저
인터페이스 내에서 위젯으로 간주가 된다.
앱 위젯을 사용하기 위해서는 App Widget Provider를 같이 사용해야 한다. App Widget Host는 여러 App Widget들을 보관할 수 있는 컴포넌트라 생각하면 된다.
해당 문서에서 App Widget Provider를 사용해서 App Widget를 생성하는 방법에 대해 배워 보자.
App Widget를 생성하기 위해서는, 다음의 것들이 필요하다.
[AppWidgetProviderInfo 객체]
App Widget에서 사용할 메타데이터를 기술해야 한다.(앱 위젯에서 사용될 레이아웃, 업데이트 주기 그리고 AppWidgetProvider 클래스 정보) 이와 같은 정보는 XML형태로 정의되어야만 한다.
[AppWidgetProvider 클래스 구현]
브로드 캐스트 이벤트를 기초로 해서, App Widget과 프로그래밍 적으로 상호 동작할 수 있도록 만들어 주는 기본적인 메소드들을 구현하며 클래스를 완성한다.
[View layout]
XML 형태로, App Widget에서 사용될 초기 레이아웃을 지정한다.
추가적으로, App Widget configuration Activity를 구현할 수 있다. 해당 Activity는 유저가 App Widget을 생성할 때, App Widget의 설정 정보를 변경할 수 있도록 만들어 주는 추가적으로 제공되는 Activity다.
가장 먼저, AppWidgetProvider 클래스를 Manifest.xml 파일에 선언해야 한다.
<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>
<receiver> 요소는 android:name이란 속성이 필요하며, 이 속성은 App Widget에 의해서 사용되는 AppWidgetProvider 클래스를 명시하는 용도다.
<intent-filter> 요소에서 android:name 속성을 갖는 <action> 요소를 추가해야 한다. 이 속성은 AppWidgetProvider가 ACTION_APPWIDGET_UPDATE 브로드캐스트를 수신한다는 것을 나타낸다.
이 액션정보는 프로그래머가 직접 선언해야 하는 유일한 브로드캐스트다. AppWidgetManager는 자동적으로 모든 App Widget과 관련된 브로드캐스팅 정보를 AppWidgetProvider에게 전달해 준다.
<meta-data> 요소는 XML로 정의된 AppWidgetProviderInfo 리소스 정보를 입력해야 하고 추가로 다음의 속성이 필요하다.
android:name :
해당 속성에는 메타데이터 이름을 명시해야 한다. AppWidgetProviderInfo라는 정보를 알려주기 위해서 "android.appwidget.provider"라는 속성값을 사용한다.
android:resource :
해당 속성에는 AppWidgetProviderInfo 리소스 위치를 명시해 줘야 한다.
Part2에는 "매니페스트 파일에서 App Widget을 선언하는 방법" 부터
시작해서 이어나가도록 하겠습니다 ^_^
도움이 되셨다면 추천 부탁드립니다!!
'안드로이드 이론' 카테고리의 다른 글
<안드로이드/Android> 앱위젯(AppWidget) PART3 (0) | 2015.06.19 |
---|---|
<안드로이드/Android> 앱위젯(AppWidget) PART2 (0) | 2015.06.19 |
<안드로이드/Android> 서비스(SERVICE) PART6 (0) | 2015.06.18 |
<안드로이드/Android> 서비스(SERVICE) PART5 (0) | 2015.06.18 |
<안드로이드/Android> 서비스(SERVICE) PART4 (0) | 2015.06.17 |