GUI의 변경에 따라 Status Bar에서 시계와 텍스트의 색들을 변경하는 작업을 하게 되었다. 어플리케이션만 담당해봐서 framework 단을 고쳐본 적은 없었지만 글씨 색깔 바꾸는 것 쯤이야 어딘가에 있는 xml 파일만 고치면 되겠지 싶어 흔쾌히 수락했다. 그런데 설마하니 이틀이나 붙잡게 될 줄이야;; 색깔을 바꾸는 것이 어려운 것이 아니라(RGB코드만 바꾸면 되니), 어디에 있는 파일을 수정해야 하는지가 상당히 난해했다.
우선 Status바의 텍스트를 바꾸는 것은 간단했다. 아래의 경로에 있는 XML 파일에서 Color 값을 바꿔주면 끝!
그런데- 시계 색은 대체 어디에서 바꾸는 건가!
남탓을 하는 것도 뭣하지만 코드를 뭐이리 헷갈리게 짜놓은 것인지, 같은 Status Bar에 있거늘 왼쪽에 나타나는 Status Text와 다르게 오른쪽에 있는 시계의 색은 대체 어디에서 바꾸는 것인지 보이지가 않는다. (이것때문에 이틀을 허비했다)
시계의 색상은 쌩뚱맞게도 Services 내부에 들어가있다. 시계가 왜 Icon 파일 안에 들어가 있는지, 왜 UI 출력되는 부분을 XML에서 하지 않고 Java 파일에서 직접 setTextColor 하는 것인지...OTL 좀 울컥하기도 하지만 이게 안드로이드다. (아련)
public StatusBarIcon(Context context, IconData data, ViewGroup parent) {
mData = data.clone();
switch (data.type) {
case IconData.TEXT: {
TextView t;
t = new TextView(context);
mTextView = t;
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT);
t.setTextSize(16);
t.setTextColor(0xff000000);
t.setTypeface(Typeface.DEFAULT_BOLD);
t.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
t.setPadding(6, 0, 0, 0);
t.setLayoutParams(layoutParams);
t.setText(data.text);
this.view = t;
break;
}
PS.
위 내용은 안드로이드 플랫폼 개발자에게만 유효한 사항이고 만약 일반 사용자가 Status Bar의 Text 색상을 바꾸려면 /system/framework/services.jar 의 jar 파일을 변경하는 것 같다. 내용이 영어이기도 하고 내가 원하는 정보가 아니라서 자세히 읽어보지는 않았지만 아래의 웹페이지를 참조.
* http://forum.xda-developers.com/showthread.php?t=549309
* http://forum.xda-developers.com/showthread.php?t=578421
'공부하는 개발자 > Mobile' 카테고리의 다른 글
| Android에서 StatusBar의 시계 색깔 바꾸기 (0) | 2011/02/07 |
|---|---|
| R.java was modified manually! Reverting to generated version! (0) | 2010/05/18 |
| 모바일 프로그래밍에서 사용자 핸드폰 번호 얻기 (0) | 2009/05/19 |
| 폼 최소화 기능 삭제 (0) | 2009/05/13 |