Как создать уведомление, подобное приложению Play Music от Google

Я пытаюсь создать уведомление, которое очень похоже на то, что использует приложение «Play Music» из Google.

Воспроизвести музыкальное приложение

Несколько вопросов, которые, надеюсь, кто-то может ответить.

  1. Это уведомление сделано с помощью пользовательских RemoteView?
  2. Является ли X закрытием части виджета API NotificationCompat.Builder? Или просто часть пользовательского RemoteView?
  3. Если это все пользовательские представления, как я могу настроить собственный RemoteView для минимизированных и максимизированных состояний?

Solutions Collecting From Web of "Как создать уведомление, подобное приложению Play Music от Google"

Да, все это делается с помощью пользовательских RemoteViews . В документах для Notification вы увидите поле для bigContentView вместе с contentView .

Я знаю, что очень поздно ответить, но это касается новых людей, которые пытаются опробовать медиа-уведомления.

  1. Нет необходимости использовать RemoteViews . Теперь мы можем просто использовать NotificationCompat.MediaStyle() . Он отлично работает по мере необходимости и обеспечивает единообразие в потреблении потребления Media .

  2. При использовании уведомлений MediaStyle не будет кнопки X для версий> Lollipop. Скорее мы уведомляем об этом уведомление в состоянии Paused. В таких случаях процесс, который должен соблюдаться, показан в этой ссылке .

  3. В уведомлении MediaStyle установлено setShowActionsInCompactView() чтобы определить, какие действия следует показывать в режиме Compact. Ниже приведен фрагмент:

      notificationBuilder.addAction(R.drawable.notification_play, "Play", createPlayIntent()); notificationBuilder.addAction(R.drawable.notification_next, "Next", createNextIntent()) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setPriority(NotificationCompat.PRIORITY_MAX) .setStyle(new NotificationCompat.MediaStyle() .setShowCancelButton(true) .setCancelButtonIntent(createPlayIntent()) .setShowActionsInCompactView(0, 1, 2); 

Это должно помочь вам при настройке всего медиа-уведомления по мере необходимости. Счастливое кодирование!

  1. Создайте statusbar_expanded.xml в res / layout-v16 /
 <ImageView android:id="@+id/thumbnail" android:layout_width="@dimen/notification_expanded_height" android:layout_height="@dimen/notification_expanded_height" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:src="@drawable/notification" android:scaleType="fitXY" /> <LinearLayout android:id="@+id/buttons" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_toRightOf="@id/thumbnail" android:divider="?android:listDivider" android:dividerPadding="12.0dip" android:gravity="center_vertical" android:orientation="horizontal" android:showDividers="middle" > <ImageButton android:id="@+id/prev" android:layout_width="0.0dip" android:layout_height="@dimen/play_controls_notification" android:layout_weight="1.0" android:background="?android:selectableItemBackground" android:padding="10.0dip" android:scaleType="fitCenter" android:src="@drawable/btn_playback_rew_jb_dark" /> <ImageButton android:id="@+id/playpause" android:layout_width="0.0dip" android:layout_height="@dimen/play_controls_notification" android:layout_weight="1.0" android:background="?android:selectableItemBackground" android:padding="10.0dip" android:scaleType="fitCenter" android:src="@drawable/btn_playback_pause_jb_dark" /> <ImageButton android:id="@+id/next" android:layout_width="0.0dip" android:layout_height="@dimen/play_controls_notification" android:layout_weight="1.0" android:background="?android:selectableItemBackground" android:padding="10.0dip" android:scaleType="fitCenter" android:src="@drawable/btn_playback_ff_jb_dark" /> </LinearLayout> <ImageView android:layout_width="wrap_content" android:layout_height="1.0px" android:layout_above="@id/buttons" android:layout_alignParentRight="true" android:layout_toRightOf="@id/thumbnail" android:background="?android:dividerHorizontal" /> <ImageButton android:id="@+id/stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="?android:selectableItemBackground" android:padding="8.0dip" android:src="@drawable/ic_close_notification_holo_dark" /> <LinearLayout android:id="@+id/textarea" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_gravity="center_vertical" android:layout_toLeftOf="@id/stop" android:layout_toRightOf="@id/thumbnail" android:orientation="vertical" android:paddingLeft="@dimen/notification_padding" android:paddingTop="8.0dip" > <TextView android:id="@+id/trackname" style="@android:style/TextAppearance.StatusBar.EventContent.Title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:ellipsize="marquee" android:fadingEdge="horizontal" android:focusable="true" android:singleLine="true" /> <Chronometer android:id="@+id/duration" style="@android:style/TextAppearance.StatusBar.EventContent" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:ellipsize="marquee" android:layout_marginTop="6dp" android:fadingEdge="horizontal" android:maxLines="1" /> </LinearLayout> 

2. notification.bigContentView assiginment RemoteView