App 위젯 만들기 (in Eclipse)
< 개발 환경 >
● 작성일 : 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 참고
'나는 프로그래머다! > Java & Android' 카테고리의 다른 글
안드로이드 리소스 정책 #2 (0) | 2016.04.19 |
---|---|
안드로이드 리소스 정책 #1 (0) | 2016.04.19 |
[JAVA] Primitive type과 Reference type 그리고 Object 클래스 (0) | 2016.04.12 |
Eclipse 에서 Tap을 Space로 변경하기 (0) | 2016.03.31 |
PreferenceActivity 와 Fragment (0) | 2016.03.10 |
BroadcastReceiver 간단 정리 (0) | 2016.02.01 |
안드로이드 View 클래스 관련 깨알같은 스펙정보 (0) | 2016.01.21 |
안드로이드 App Flag_Activity 란? (0) | 2016.01.21 |
JNI & 예제 (0) | 2013.04.01 |
make / 모듈 추가 방법 (0) | 2013.04.01 |