<안드로이드/Android> 앱위젯(AppWidget) PART1

Posted by 앱해피
2015. 6. 19. 11:50 안드로이드 이론

 

App Widget은 무엇일까?

 

앱 위젯은 '홈 스크린'과 같은 다른 어플리케이션에 내장된 '작은 크기의 어플리케이션 뷰'다.


그리고, 이 앱위젯은 주기적으로 최신 정보를 반영하기 위해 업데이트 된다. 앱 위젯은 보통 유저

인터페이스 내에서 위젯으로 간주가 된다.

 

앱 위젯을 사용하기 위해서는 App Widget Provider를 같이 사용해야 한다. App Widget Host는 여러 App Widget들을 보관할 수 있는 컴포넌트라 생각하면 된다.

 

해당 문서에서 App Widget Provider를 사용해서 App Widget를 생성하는 방법에 대해 배워 보자.

 

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다.

 

매니페스트 파일에 App Widget을 선언하는 방법.

 

가장 먼저, 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을 선언하는 방법" 부터

 

시작해서 이어나가도록 하겠습니다 ^_^

 

도움이 되셨다면 추천 부탁드립니다!!