2013-01-24 77 views
13

我正在嘗試創建一個與Google使用的「Play音樂」應用程序非常相似的通知。如何創建類似於Google的Play音樂應用程序的通知

Play Music app notification

一些問題,從而希望有人能回答。

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

回答

10

是的,所有這些都是通過自定義RemoteViews完成的。你會在Notification的文檔中看到,有bigContentView以及contentView的字段。

+2

感謝您的回覆。在我發現我必須首先構建Notification並且然後可以設置bigContentView之前,讓我稍微弄了一會兒。 – Jona

+0

@Kabuko給了我一個建議。我使用RemoteView構建通知大視圖來控制播放/暫停,就像這個鏈接一樣(http://stackoverflow.com/questions/14508369/how-to-create-a-notification-similar-to-play-music-app-from - 谷歌)一切正常,但當我點擊設備後退按鈕,並從應用程序點擊事件(播放/暫停/轉發/關閉)按鈕不起作用。請幫助我。 –

+0

@HelalKhan隨意創建一個新的問題與更多的細節。儘管如此,這裏的評論並不適合這個地方。 – kabuko

1
  1. 創建資源statusbar_expanded.xml /佈局-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遠程視窗

+0

需要建議。一切正常,但當我點擊設備後退按鈕,並從應用程序點擊事件(播放/暫停/前進/關閉)按鈕不起作用。請幫助我。 –

+0

豎起大拇指爲 style =「@ android:style/TextAppearance.StatusBar.EventContent.Title」 謝謝我的朋友。 luv ya – AlAsiri

4

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

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

  2. 使用MediaStyle通知時,將不會有X按鈕用於版本>棒棒糖。相反,當處於暫停狀態時,我們會使通知不可用。在這種情況下,在link中顯示了要遵循的流程。

  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); 
    

這會幫助你在需要建立全媒體通知。快樂的編碼!

相關問題