如何在android中创建自定义通知

时间:2014-04-16 06:05:54

标签: android notifications android-custom-view

我需要在android中创建自定义通知而不是默认通知。 当前通知有一个图标,标题和消息,如下面的图像

enter image description here

我希望它像这样自定义

enter image description here

我怎样才能实现这个目标

4 个答案:

答案 0 :(得分:7)

通知视图

普通视图 - 普通视图中的通知显示在最高64 dp的区域中。即使您使用大视图样式创建通知,它也会在普通视图中显示,直到它被展开。

Content title
Large icon
Content text
Content info
Small icon
Notification time

普通视图赞 enter image description here

大视图 - 只有在通知展开时才会显示通知的大视图,当通知位于通知抽屉的顶部时,或者当用户使用手势展开通知时,就会出现通知。扩展通知最初是在Android 4.1 JellyBean [API 16]中引入的。 Expandable notifications旨在支持名为Notification.Style的丰富通知样式对象。

大视图

enter image description here

转到此链接expandable-notifications-android

有关官方docs

的更多信息

答案 1 :(得分:4)

我已通过以下http://developer.android.com/wear/notifications/creating.html

创建了通知

添加创建通知的代码。

// Specify the 'big view' content to display the long
// event description that may not fit the normal content text.
BigTextStyle bigStyle = new NotificationCompat.BigTextStyle();
bigStyle.bigText(eventDescription);

NotificationCompat.Builder notificationBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.ic_event)
        .setLargeIcon(BitmapFractory.decodeResource(
                getResources(), R.drawable.notif_background))
        .setContentTitle(eventTitle)
        .setContentText(eventLocation)
        .setContentIntent(viewPendingIntent)
        .addAction(R.drawable.ic_map,
                getString(R.string.map), mapPendingIntent)
        .setStyle(bigStyle);

答案 2 :(得分:3)

这个名为Expanded layouts的名字来自Jelly Bean版本。

有两种通知视图:

  1. 普通视图
  2. 大视图
  3. 通知的大视图仅在通知展开时显示,当通知位于通知抽屉的顶部时,或者当用户使用手势展开通知时,会发生通知。扩展通知最初是在Android 4.1 JellyBean [API 16]中引入的。

    在您的情况下,您只想在通知中显示大图,尝试Notification.BigPictureStyle

    Bitmap remote_picture = null;
    
    // Create the style object with BigPictureStyle subclass.
    NotificationCompat.BigPictureStyle notiStyle = new 
            NotificationCompat.BigPictureStyle();
    notiStyle.setBigContentTitle("Big Picture Expanded");
    notiStyle.setSummaryText("Nice big picture.");
    
    try {
            remote_picture = BitmapFactory.decodeStream(
                    (InputStream) new URL(sample_url).getContent());
    } catch (IOException e) {
            e.printStackTrace();
    }
    
    // Add the big picture to the style.
    notiStyle.bigPicture(remote_picture);
    

答案 3 :(得分:0)

您可以使用需要remoteview的NotificationCompat。下面我设置了名为
的自定义布局 activity_downlaodactivity

NotificationManager manager =   (NotificationManager)       getSystemService(Context.NOTIFICATION_SERVICE);
    RemoteViews contentView = new RemoteViews(getPackageName(),R.layout.activity_downlaodactivity);


   android.support.v4.app.NotificationCompat.Builder    mBuilder =
            new android.support.v4.app.NotificationCompat.Builder(this)
            .setContent(contentView)

   manager.notify(0, mBuilder.build());