Programming/Android

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

Fimtrus 2014. 12. 30. 14:47

최근에 많은 앱들이 젤리빈(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