簡體   English   中英

如何創建類似於Google的Play音樂應用的通知

[英]How to create a notification similar to Play Music app from Google

我正在嘗試創建一個與Google使用的“Play Music”應用程序非常類似的通知。

播放音樂應用通知

很少有人希望有人可以回答這些問題。

  1. 此通知是否使用自定義RemoteViews完成?
  2. 是否用於關閉NotificationCompat.Builder API的小部件部分? 或者只是自定義RemoteView的一部分?
  3. 如果是所有自定義視圖,如何為最小化和最大化狀態設置自定義RemoteView?

是的,所有這些都是通過自定義RemoteViews完成的。 您將在Notification文檔中看到, bigContentViewcontentView都有一個字段。

我知道我很晚才回答,但這是針對嘗試媒體通知的新人。

  1. 無需使用RemoteViews 我們現在可以簡單地使用NotificationCompat.MediaStyle() 它可以根據需要完美運行,並使Media消費體驗更加統一。

  2. 使用MediaStyle通知時,版本> Lollipop將沒有X按鈕。 相反,我們在暫停狀態下使通知不可用。 在這種情況下,要遵循的過程顯示在此鏈接中

  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. 在res / layout-v16 /中創建statusbar_expanded.xml

<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM