레이블이 remoteview인 게시물을 표시합니다. 모든 게시물 표시
레이블이 remoteview인 게시물을 표시합니다. 모든 게시물 표시

2012년 3월 20일 화요일

[안드로이드] ICS에서 Notification에 ProgressBar가 깨짐

ICS에서 RemoteView를 이용해 ProgressBar를 그리면 ProgressBar의 끝부분이 꺽여서 보기 흉해지는 경우가 있다.
원인은 잘모르겠으나 아마 ICS의 새로운  ProgressBar 는 (직접 그리는게 아니고)이미지로 되어 있기 때문인듯 한데...
그렇게 깨지는 경우 padding값이나 margin 값을 주어 ProgressBar의 위치를 조정해 주면된다.
상당히 꼴사나운 방법이지만 다른 방법은 찾지 못했다.
참고로 padding값이나 margin 값을 px가 아닌 dp로 줘야 한다.
요즘엔 폰마다 해상도가 천차 만별 -ㅁ-;;

아 그리고 ProgressBar의 스타일은 예전 버전처럼 주면 꺽이는 문제는 발생하지 않는다.
다만 촌스럽게 보일뿐 ^^;;
뭐 개인차겠지만;;
스타일에 Widget.ProgressBar.Horizontal 지정하여 사용 하시길...

[안드로이드] ICS에서 Notification RemoteView 사용하기

ICS에선 노티피케이션이 좀 멋있어 졌다.
좌측의 아이콘 화면이 노티피케이션 항목의 높이 만큼 커졌는데..
리모트 뷰를 사용 하던 기존 소스를 이용하면 새로운 노티피케이션과 어울리지않는 촌스러운 화면으로 보여 지게 된다.
그렇다고 RemoteView로 ICS스타일 처럼 똑같이 만들자니 쉽지가 않다.

자 그럼 왼쪽에 큰 아이콘을 유지 하면서 그 오른쪽에 RemoteView를 그리려면?
방법은 간단하다.
1. 먼저 기존의 RemoteView 의 레이아웃에서 아이콘을 제거 한다.
2. 좌측에 큰 아이콘을 넣을 것 이므로 그에 맞춰 레이아웃을 조정한다. 그럼 xml은 완성.
3. 다음으로 Notification을 만드는 코드에서 다음과 같이 largeIcon 값을 지정한다.
noti.largeIcon = BitmapFactory.decodeResource(res, resourceID);
    Notification.builder를 이용한다면 다음과 같이 지정 하면 된다.
notiBuilder.setLargeIcon(BitmapFactory.decodeResource(res, resourceID));
이렇게 하면 ICS에서도 이쁘게 보이는 Notification이 된다.