본문 바로가기
Study/Android

custom Notification (커스텀 알림창)

by Answer Choi 2015. 11. 18.
반응형

안드로이드에서는 기본적으로 제공하는 알림창외에도 사용자가 임의로 만들 수 있는 


커스텀뷰를 알림창으로 만들 수 있습니다.


먼저 일반적인 알림창입니다.




표현할 수 있는게 별로 없습니다. 


그렇다고 버튼을 달 수 도 있습니다. 


물론 알림창을 클릭하면 다른 화면으로 이동은 가능합니다.


좀 더 자유로운 레이아웃을 구성하려면 remoteview를 사용해야 합니다.


먼저 레이아웃을 하나 구성합니다.




 아래로 늘어나서 이상하게 보이지만 나중에 띄워보면 제대로 나옵니다.


저는 제일 왼쪽에 아이콘을 두고 두번째에는 텍스트 뷰를 3개 오른쪽에는 텍스트 뷰 1개와 


이미지 버튼 하나를 배치했습니다.


그리고 구현된 자바 코드입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
NotificationCompat.Builder mBuilder;
public Intent intent1,intent2;
public PendingIntent pintent1,pintent2 ;
public RemoteViews contentView;   
 
intent1 = new Intent(this,update.class);
pintent1 = PendingIntent.getActivity(this0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
 
intent2 = new Intent(this, main.class);
pintent2 = PendingIntent.getActivity(this0, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
 
contentView = new RemoteViews(getPackageName(), R.layout.notify);
contentView.setTextViewText(R.id.notifyLocation, location);
contentView.setTextViewText(R.id.notifyWeather, "날씨 : " + curWfKor + "," + curTemp);
contentView.setTextViewText(R.id.notifyFinddust, "미세먼지 : " + finddust);
contentView.setTextViewText(R.id.notifyTime, updateTime);
contentView.setOnClickPendingIntent(R.id.notifyReflash, pintent1);
 
mBuilder=new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.genie_icon)
        .setContent(contentView)
        .setContentIntent(pintent2);
 
mManager.notify(notifyID, mBuilder.build());
cs


Line 6~7 : 이미지 버튼눌렀을때 이동할 액티비티를 정의하는 곳입니다.


Line 9~10 : 알림창의 가운데부분을 눌렀을 때 이동할 액티비티를 정의합니다.


Line 12 : 위에서 만들어진 레이아웃을 정의해 줍니다.


Line 13 : firstText입니다.


Line 14 : secondText입니다.


Line 15 : thirdText입니다.


Line 16 : 오른쪽의 dateText입니다.


Line 17 : 6~7에서 정의한 버튼 이미지버튼에 연결해 줍니다.


Line 19~22 : remoteview와 설정들을 notification.builder에 넣어줍니다.


Line 24 : notification을 실행시킵니다.


이렇게하고 실행해 보면 아래와 같이 만들어 집니다.





반응형

인기글