App 위젯 만들기 (in Eclipse)

Posted by ironmask84
2016. 1. 14. 16:15 나는 프로그래머다!/Java & Android


< 개발 환경 >  
   작성일 : 2016.01.14
   OS 설치 버전 : Windows7 32bit 
   SDK 설치 버전 : 안드로이드 SDK 4.4.2 (KitKat) / API LELVEL : 19 
   Java 설치 버전 : JDK 1.8.0_45 / JRE7 
   이클립스 설치 버전 : Mars
   테스트단말 : LG G2 4.4.2 (KitKat)   

 < 프로젝트 적용 > 
   API LEVEL : 19  
   minSdkVersion : 19 
   targetSdkVersion : 지정 안함 (지정 안하면 min = target)    
   Java Compiler Level : 1.8  
   Text file encoding : 
UTF-8


오랜만에 다시 안드로이드 개발이 시작되었습니다..

Home App을 건드리다가 이제는 위젯을 만들어야 하는데,

간단한 위젯이어서 큰 부담은 없었지만, 처음 만들어 보는 것이여서..

역시 첨 접근이 힘든법이죠. ㅎㅎㅎ


2014년에 사용했던, Eclipse + ADT 버젼을 그대로 사용하려 했는데,

Ant를 이용한 빌드환경 세팅이 잘 안되서...
(정확한 원인은 모르겠으나, 결과적으론 Eclipse 버젼 교체(Juno -> Mars) 후 정상동작)
Eclipse만 Mars 버젼으로 사용하고, and-sdk 세트를 적용(Preferences -> Android ->  SDK Location)

정말 Eclipse가 갈수록 발전하는 것 같네요.

project 생성 시, 기본 세팅을 해주는 것들이 많은데 위젯도 예전부터 있었겠지만,
Activity와 마찬가지로  기본적인 override 함수들 정의 및 기본 layout, strings 까지 생성시켜줍니다.

new-> Others -> Android -> Android Object 로 들어가서 App Widget 선택!


위 메뉴 대로 직접 생성시켜보면,

위젯만드는법을 검색해서 찾아보는 것보다 훨씬 직관적으로 이해하게 되더군요...

역시 여러번 보는 것보다 1번 직접 해보는 것이 효과적입니다. ㅋㅋ

간략히 정리하면, 아래 상자에 있는 것들이 생성됩니다.

1. AndroidManifest.xml -> receiver로 추가


2. res/layout/widget.xml 추가 (위젯 구성 UI Object)


3. res/xml/widget_info.xml 추가 (위젯 사이즈 및 update 주기 설정)


4. Widget Class 생성 

--> extends AppWidgetProvider, onUpdate(), onEnabled(), onDisabled(),

updateAppWidget(Context context, AppWidgetManager appWidgetManager, 

int appWidgetId) 을 기본으로 구성 

    
여기서, onUpdate() 가 인자로 AppWidgetManager appWidgetManager, int[] appWidgetIds 를 

받아오는 이유는, 기본적으로 App위젯은 appWidgetManager 에서 관리되며 이 위젯을 복수로 사용할 경우, 

appWidgetIds[] 를 통해 인덱스가 관리되므로, 각각의 위젯 UI를 Update해주기 위함이다..
onUpdate()는 명시적으로 호출해도 되고, 위에서 설명한 3번 
widget_info.xml에서 

주기 설정이 가능하다.


5. res/value/strings.xml 에 기본 추가되는 TextView에 넣을 string 하나 추가



* Ant : http://blog.naver.com/tommybee/220312166870  참고

* 더욱 자세한 위젯 설명 : http://arabiannight.tistory.com/239 참고