젤리빈(Android 4.1)에서 추가된 다양한 Notification을 사용해보자!
안드로이드 4.1(젤리빈)에서 다양한 형태의 알림(Notification)이 추가되었습니다.
뿐만 아니라, 이전의 약간은 '어중간했던' 알림 생성 및 공지 방법이 깔끔하게 보강되었습니다.
이번 포스트에서는 예제 프로젝트를 통해 젤리빈에서 추가된 알림을 띄워보도록 하겠습니다.
젤리빈에서 크게 3가지의 알림 스타일이 추가되었습니다.
추가로, 알림에 '액션'을 할당할 수 있어 기존에 '알림'을 눌러 동작을 실행해야 했던 것에서 벗어 나
다양한 작업을 사용자에게 쉽게 노출시킬 수 있게 되었습니다.
허니컴부터 알림 생성을 더욱 쉽게 할 수 있는 Notification.Builder 클래스가 추가되었으며,
젤리빈에서도 이 클래스를 사용하여 다양한 형태의 알림을 쉽게 생성할 수 있습니다.
Notification.Builder 클래스를 통해 알림의 여러 속성을 지정하고,
최종으로 build() 메서드를 호출하여 Notification 객체를 생성하는 구조로 되어있습니다.
마지막으로 이를 NotificationManager의 notify() 메서드를 사용하여 띄울 수 있습니다.
BigPictureStyle
알림에 큰 이미지가 들어간 알림 스타일입니다.
알림은 다음과 같이 표시됩니다.
젤리빈에서는 각 형태의 Notification을 쉽게 생성할 수 있도록 각 알림 스타일을 미리 제공하고 있습니다.
여기에서는 Notification.BigPictureStyle을 사용하면 됩니다. BigPictureStyle 알림을 생성하는 코드와
코드가 영향을 미치는 부분을 그림으로 표현하면 다음과 같습니다.
위에서 addAction()의 intent에는 버튼을 눌렀을 때 실행할 동작을 포함하는 PendingIntent를 대입하면 됩니다.
BigTextStyle
BigTextStyle은 알림에 긴 내용의 텍스트를 표시합니다.
단순히 짧은 내용의 알림이 아니라 문자메시지 내용, 이메일 본문 등 많은 내용을 보여줘야 하는 경우에 사용하면 유용합니다.
BigTextStyle 알림은 다음과 같이 표시됩니다.
BigTextStyle 알림을 생성하는 코드와, 각 코드와 알림 요소간의 관계를 그림으로 나타내면 다음과 같습니다.
InboxStyle
InboxStyle은 이름에서 유추할 수 있듯이 '받은편지함'과 같이 여러 항목을 표시해야 하는 알림에 적합합니다.
하나의 알림에 최대 5개 항목까지 표시할 수 있습니다. 알림이 표시되는 모습은 다음과 같습니다.
InboxStyle 알림을 생성하는 코드와 알림 요소와의 연결관계는 다음과 같습니다.
ProgressBar
젤리빈에서 추가된 것은 아니지만 (ICS에서 추가됨) 유용하게 사용할 수 있으리라 생각되어 하나 더 다뤄봅니다.
컨텐츠 다운로드/업로드 상태, 혹은 작업 상태를 알림으로 쉽게 표시할 수 있는 ProgressBar 형태입니다.
다음과 같이 알림에 ProgressBar가 들어가 있습니다.
Progress는 Notification.Builder의 setProgress() 메서드를 사용하여 설정할 수 있습니다.
setProgress()의 세번째 인자를 true로 하면 Indeterminate상태의 ProgressBar를 표시하도록 할 수 있습니다.
public Notification.Builder setProgress(int max, int progress, boolean indeterminate)
알림의 진행 정도를 설정합니다.
setProgress()를 사용하는 알림을 생성하는 코드와 알림간의 상관관계를 그림으로 표현하면 다음과 같습니다.
'유저 인터페이스 > 알림(Notification)' 카테고리의 다른 글
젤리빈(Android 4.1)에서 추가된 다양한 Notification을 사용해보자! (16) | 2012.07.17 |
---|---|
Notification을 정ㅋ벅ㅋ - NotificationBuilder 예제 만들어보기 (34) | 2010.01.19 |
나를 주목하라! - Notification (2) | 2009.11.01 |
안녕하세요~ Notification 강좌 잘 보았습니다.
addAction 부분 관련하여 구현할 일이 있어 구현중인데요~
혹 Expanded 는 특별히 flag를 넣어주어야 보이는 건가요?
단말에 올려서 확인시 expanded 로 안나오는것 같아서 collapsed 와 달리 별도로 조건이 필요한가 해서요 ^^
저도 따로 플래그를 찾지는 못했는데, Priority를 조정하면 변화가 있지 않을까 추측해봅니다
멋진 글 잘 보았습니다.
감사합니다!
제폰이 갤3젤리빈 이거든요??그런데 올려져 있는 파일로 헤보니까 똑같이 2줄로만 나오네요??업글을 해야되는것인지..ㅜㅜ
알림바를 두 손가락으로 아래로 당기면 확장됩니다~
알림바를 두 손가락으로 아래로 당기면 확장됩니다~
알림을 두 손가락으로 쓸어내리면 숨겨진 내용이 보입니다
고맙습니다. ㅠㅠ. 이틀동안 해매다가 커니님 덕분에 겨우 해결 되었네요.
BigTextStyle 사용할때 bigText의 문구가 2줄이상 넘어갈때 처음부터 2줄이상 전부 보여주기 위해서는
NotificationCompat.Builder builder = new NotificationCompat.Builder(Context);
생략...
builder.setPriority(NotificationCompat.PRIORITY_MAX); <-- 요게 핵심
해주니깐 원하는대로 보이네요.
참고하세요~
안녕하세요. 노티피케이션을 등록 할 때 리모트뷰를 사용해서 다양한 노티피케이션 바를 만들 수 있다는 사실을 알게 되었습니다.
한가지 질문이 있는데 혹시 이미지뷰를 동적으로 추가해서 생성 할 순 없나요?
이미지를 동적으로 추가 생성 했더니 노티바는 나오는데 이미지는 안나오는 결과가 나옵니다. 방법이..ㅜ?
RemoteViews 에서 지원하는 뷰만 사용 가능합니다~
안녕하세요 현재 GCM을 이용한 푸시 메시지 구현중인데 현재 php 연동해서 메시지 보내는 것 까진 됐는데 이미지 url을 같이 보내서 하는 부분을 구현하고 싶은데 이것도 가능할까요?
GCM 페이로드에 이미지 URL을 전송하는 것을 말씀하시는 건가요?
네 웹에서 url을 보내면 GCM에서 url을 같이 보내주면서 이미지 비트맵형식으로 뿌려주는 형태를 개발중이거든요..
비밀댓글입니다
Notification.builder 의 .addaction 을 이용해서 완전히 어플종료를 하고 싶은데 어떤 방법이 있을까요??