본문 바로가기

유저 인터페이스/알림(Notification)

젤리빈(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()를 사용하는 알림을 생성하는 코드와 알림간의 상관관계를 그림으로 표현하면 다음과 같습니다.