woong's
Android widget 사용하기 본문
Android widget 사용하기 이번 디데이 앱을 만들면서 위젯을 사용하게 되어서 저도 사용은 해보았지만 , 정리한 자료가 없어 이렇게 포스트를 쓰고 있습니다 . Widget 을 사용하기 위해 준비해야 할것들 1. 보여질 Widget 의 레이아웃 2. Widget_Configration xml 3. AppWidgetProvider 를 상속한 class 4. receiver 입니다 . 위 순서대로 진행을 해보겠습니다 . 1. 보여질 Widget 의 레이아웃
저는 이와 같이 구성했습니다 . 기존의 android xml 구성하듯이 구성하시면 됩니다 . 2. Widget_Configration xml
Widget_Configration xml 작성한 부분입니다 . android:initialLayout 은 위에서 방금 작성한 xml 파일입니다 . 위젯 레이아웃으로 사용됩니다 . 위젯의 레이아웃은 제한적입니다 . 레이아웃 : FrameLayout , LinearLayout , RelativeLayout 뷰 : Button , TextView , ImageView , PrograssBar 기타 : AnalogClock , ImageButton , Chronometer 만 지원을 합니다. minHeight , minWidth 는화면상의 크기를 지정 72dp 단위로 작성해야 합니다 . 위젯의 1칸 크기는 가로 세로 72에 dp 입니다. 셀의 크기는 74dp 이나 오차를 감안하여 (셀수 * 74) - 2dip 아래의 공식을 통해 대체로 72dp 를 이용한다고 합니다 . 저는 2X2 로 만들었습니다 . updatePeriodMillis 는 위젯이 갱신되는 주기 입니다 . 위젯이 갱신되는 주기가 짧으면 디바이스에 부담와 배터리 사용량이 감소가 많이 되므로 구글 측에서 최소 단위를 30분으로 지정해 아무리 작게 주어도 최소 30분 주기로 갱신이 됩니다 . 또한 저와 같이 0 으로 지정을 하면 따로 갱신을 하지 않습니다 . 마지막으로 앱 위젯 사이클에 대해 간략히 설명하겠습니다 . 앱 위젯 사이클 ACTION_APPWIDGET_ENABLED : 앱위젯의 첫번째 인스턴스가 설치 될때 전달 ACTION_APPWIDGET_DELETED : 앱위젯의 인스턴스중 일부가 삭제 될때 전달 ACTION_APPWIDGET_DISABLED : 앱위젯의 인스턴스가 제거 될때 전달 ACTION_APPWIDGET_UPDATE : 개별 앱위젯을 갱신할때마다 전달 * 반드시 처
3. AppWidgetProvider 를 상속한 class
onUpdate 메서드는 제일 중요한 메서드입니다 . 방송을 갱신하는 역할을 하고 있습니다 . 제가 지금 만드는 위젯은 화면에 보려여지는 부분만 진행하기때문에 많은것 필요없이 onUdate 만 구현하면 되겠습니다 . 4. receiver 마지막으로 리시버를 등록하면 저희가 만든 위젯을 확인할수 있습니다 . Manifast.xml 파일에 <application> 태그 안에 리시버를 등록합니다 .
receiver 의 name은 AppWidgetProvider 상속을 받아 만든 클래스를 명시해 주면 됩니다 . receiver label 은 위젯 목록의 제록이 되겠습니다. receiver 에 meta-data , intent-filter 를 지정해야합니다 . meta-data 에는 저희가 위해서 만든 widget_configration을 설정합니다 . 마지막으로 intent-filter 를 등록합니다 . 이렇게 진행을 다하시고 프로젝트를 실행후 위젯화면에 가면 위젯목록에 저희가 만든 위젯이 있는것을 확인할수 있습니다 .
|
'Develop > Android' 카테고리의 다른 글
Android widget configure 사용하기 (1) | 2016.02.14 |
---|---|
Android Widget ReSize 사용하기 (0) | 2016.02.14 |
Android CheckBok 사용하기 (0) | 2016.02.14 |
Android TextView ... 처리 (0) | 2016.02.14 |
안드로이드 레이아웃 최적화 (1) | 2016.02.14 |