Deperecated/Android_강의

안드로이드 - Style Notification

누알라리 2020. 2. 14. 03:12
1. Style Notification

- 안드로이드 4.1에 새롭게 추가된 부분으로 4.0 이하 버전에서는 기본 알림 메세지로 표시된다.

- 안드로이드 4.1 이후 부터는 알림 메세지를 접었다 펼쳤다 하면서 부가 정보를 표기할 수 있다.

 

2. Big Picture Style

- 메세지를 펼쳤을 때 이미지를 표시할 수 있다.

이렇게!

1. 빌더 세팅

2. Big Picture Style 세팅

3. Notification 객체 만들어서 띄우기

 

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener { view ->

            // 1. 빌더 세팅
            var builder = getNotificationBuilder("style", "style Notification")
            builder.setContentTitle("Big Picture")
            builder.setContentText("빅픽쳐 노티피케이션")
            builder.setSmallIcon(android.R.drawable.ic_media_next)

            // 2. 빅픽쳐 스타일 세팅
            var big = NotificationCompat.BigPictureStyle(builder)
            var bitmap = BitmapFactory.decodeResource(resources, R.drawable.images)
            big.bigPicture(bitmap)
            big.setBigContentTitle("빅컨텐트타이틀")
            big.setSummaryText("서머리")

            // 3. 노티피케이션 객체 만들어서 띄우기
            var notification = builder.build()
            var manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(10, notification)
        }

    }

    fun getNotificationBuilder(id:String, name:String) : NotificationCompat.Builder{
        var builder:NotificationCompat.Builder? = null

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
        {
            // 매니저 생성
            var manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            // 채널 생성
            var channel = NotificationChannel(id, name, NotificationManager.IMPORTANCE_HIGH)
            channel.enableLights(true)
            channel.lightColor = Color.RED
            channel.enableVibration(true)
            manager.createNotificationChannel(channel)

            //채널의 아이디를 넣어서 채널 아이디가 세팅된게 넘어가면서 채널별로 그룹화해서 노피티케이션을 만들 수 있다.
            builder = NotificationCompat.Builder(this, id)

        }
        else
        {
            // 8.0 이하에서는 노티피케이션 채널을 만들어줄 필요가 없다.
            builder = NotificationCompat.Builder(this)
        }

        return builder
    }

 

3. Big Text Style

- 메세지를 펼쳤을 때 장문의 문자열을 표시할 수 있다.

        button2.setOnClickListener { view ->
            // 1. 빌더 세팅
            var builder = getNotificationBuilder("style", "style Notification")
            builder.setContentTitle("Big Picture")
            builder.setContentText("빅픽쳐 노티피케이션")
            builder.setSmallIcon(android.R.drawable.ic_media_next)

            // 2. 빅텍스트 스타일 세팅
            var big = NotificationCompat.BigTextStyle(builder)
            big.setSummaryText("서머리 텍스트")
            big.setBigContentTitle("빅 컨텐트 타이틀")
            big.bigText("동해물과 백두산이 마르고 닳도록 동해물과 백두산이 마르고 닳도록 동해물과 백두산이 마르고 닳도록동해물과 백두산이 마르고 닳도록 동해물과 백두산이 마르고 닳도록 ")

            // 3. 노티피케이션 객체 만들어서 띄우기
            var notification = builder.build()
            var manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(10, notification)
        }

 

4. InBox Style

- 메세지를 펼쳤을 때 문자열들을 표시할 수 있다.

        button3.setOnClickListener { view ->
            // 1. 빌더 세팅
            var builder = getNotificationBuilder("style", "style Notification")
            builder.setContentTitle("Big Picture")
            builder.setContentText("빅픽쳐 노티피케이션")
            builder.setSmallIcon(android.R.drawable.ic_media_next)

            // 2. 인박스  스타일 세팅
            var inbox = NotificationCompat.InboxStyle(builder)
            inbox.setSummaryText("인박스 서머리")
            inbox.addLine("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
            inbox.addLine("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb")
            inbox.addLine("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc")
            inbox.addLine("ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd")


            // 3. 노티피케이션 객체 만들어서 띄우기
            var notification = builder.build()
            var manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            manager.notify(10, notification)
        }

 

'Deperecated > Android_강의' 카테고리의 다른 글

안드로이드 - 쓰레드  (0) 2020.02.14
안드로이드 - 권한 및 쓰레드  (0) 2020.02.14
안드로이드 - Pending Intent  (0) 2020.02.14
안드로이드 - Notification  (0) 2020.02.14
안드로이드 - 다이얼로그  (0) 2020.02.13