[Android] Notification에 큰 이미지 적용하기

Posted by Find my true self Fimtrus
2014.12.30 14:47 Programming/Android

최근에 많은 앱들이 젤리빈(Android 4.1) 버전에서 추가된 BicPictureStyle을 이용하여 


노티바에 큰 이미지를 보여주고 있다.



두손가락을 이용해 위로 드래그 하게 되면 접히고, 아래로 드래그 하면 큰이미지가 보이면서 열리게 된다.


즉..접혔을때의 컨텐츠와 열렸을때 서로 다른 컨텐츠를 지정할 수 있다.


필자는 다양한 버전을 지원하기 위해 v4 support library를 사용하였으며


해당 값들의 세팅은 임의로 지정하였다.



/**
  * 먼저 NotificationCompat Builder를 선언한다.
  *  Builder의 경우 접혔을 때 노티바에 표시할 컨텐츠를 설정한다.
  */
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
	.setSmallIcon(R.drawable.ic_launcher) //작은아이콘 세팅
	.setContentTitle(context.getResources().getString(R.string.title) ) //노티바에 표시될 타이틀
        .setContentText(context.getResources().getString(R.string.message) ) //노티바에 표시된 Description
        .setAutoCancel(true) //클릭하게 되면 사라지도록...
        .setVibrate(new long[] { 1000, 1000 }) //노티가 등록될 때 진동 패턴 1초씩 두번.
        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); //노티가 등록될 때 사운드와 진동이 오도록, 기본 사운드가 울리도록.

/**
  * 두 손가락으로 드래그 했을 때 표시된 컨텐츠를 설정한다.
  */
BigPictureStyle bigPictureStyle = new NotificationCompat.BigPictureStyle(builder); //상단의 빌더를 인자로 받음..
Bitmap bigPictureBitmap  = BitmapFactory.decodeResource(context.getResources(), R.drawable.i_hero); //드래그 후 공간에 표시할 이미지.
	bigPictureStyle.bigPicture(bigPictureBitmap) //상단의 비트맵을 넣어준다.
	.setBigContentTitle(context.getResources().getString( R.string.big_title) ) //열렸을때의 타이틀
	.setSummaryText(context.getResources().getString( R.string.big_message) ); //열렸을때의 Description


위와 같이 설정을 하게 되면 기존에 드래그해도 반응이 없던 노티가


아래로 커지면서 큰이미지를 표시하게 된다.


혹시...이해가 잘안된다면 아래 샘플을 참고..



notificationSample.zip



이 댓글을 비밀 댓글로
    • 안녕하세요
    • 2015.05.11 17:00
    안드로이드 개발에 많은 도움이 되었습니다. 감사합니다.
    한 가지 질문이 있습니다 ~
    BigPictureStyle 를 이용하여 push 알림에 이미지를 추가까지 완료를 하였는데요..
    닫힌 상태로 push 알림이 와 두 손가락을 이용하여 드래그하여야 expand 가 되어 이미지가 나오는데 처음 푸시 상태에서 이미지가 열림 상태로 나오게 하는 방법이 있나요?
    • 안녕하세요

      답변이 조금 늦었네요.

      expand 관련 메쏘드는 존재하지 않는 것 같아요.

      아무래도 여러개의 앱들의 푸시가 모두 펼쳐져 있으면 유저로서 불편함을 느낄 수 있기 때문이지 않을까 생각이 드네요.