詳解 Android 通知欄

一、通知欄簡介

通知欄是 Android 應用程序開發中非常重要的一部分,它可以為用戶顯示未讀消息、提醒等,也可以讓用戶快速進入應用程序。您可以通過通知欄,向用戶發送通知消息,比如新消息、新郵件、任務完成等等,這對於搶佔用戶注意力大有裨益。

二、基礎通知欄功能

通知欄具有一些基本的功能,包括展示通知、清除通知、進入應用程序、通知欄摺疊和展開。

1、展示通知

下面是通過函數創建的最基礎的通知:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT);
Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,
        PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(NOTIFICATION_ID, builder.build());

2、清除通知

用戶可以通過點擊通知欄中的 「清除」 或者 「全部清除」 按鈕來清除通知。您也可以通過以下方式來手動清除通知:

notificationManager.cancel(NOTIFICATION_ID);

3、進入應用程序

當用戶點擊通知欄中的通知時,應用程序會被自動喚醒。您可以使用以下代碼片段打開您的應用程序:

Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);

4、通知欄摺疊和展開

通知欄默認是展開的,用戶可以通過向下滑動通知欄來切換到摺疊模式。在摺疊模式下,通知欄只會展示基本信息,並顯示通知圖標。您可以添加以下代碼來支持通知欄的摺疊和展開:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
bigTextStyle.setBigContentTitle("Big Text Notification");
bigTextStyle.bigText("This is a big text notification,……");
builder.setStyle(bigTextStyle);

三、高級功能

通知欄也具有一些高級的功能,包括聲音、震動、懸掛式通知、影響性能的功能等。

1、聲音和震動

通知欄支持為通知添加聲音和震動效果。以下代碼為通知添加了默認的聲音和震動效果:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setDefaults(Notification.DEFAULT_ALL);

2、懸掛式通知

通知欄支持顯示懸掛式通知,類似於 Facebook Messenger 或者搜狗輸入法的方式。以下代碼為通知添加了懸掛式通知效果:

Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ResultActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
        stackBuilder.getPendingIntent(
                0,
                PendingIntent.FLAG_UPDATE_CURRENT
        );
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setContentIntent(resultPendingIntent)
        .setPriority(NotificationCompat.PRIORITY_HIGH)
        .setFullScreenIntent(resultPendingIntent, true);

3、影響性能的功能

通知欄也包含一些影響性能的高級功能,比如:摺疊式通知、消息計數器、進度條和自定義視圖。

3.1 摺疊式通知

摺疊式通知是一種可以摺疊和展開的通知,用戶可以通過向下滑動通知欄來切換是否展示詳細信息。以下代碼為通知添加了摺疊式通知效果:

NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
String[] messages = {"Hello World!", "Meeting at 6 pm!", "Don't forget to bring the document!"};
inboxStyle.setBigContentTitle("Inbox Notification");
for (int i = 0; i < messages.length; i++) {
    inboxStyle.addLine(messages[i]);
}
builder.setStyle(inboxStyle);

3.2 消息計數器

消息計數器是一種非常有用的功能,它可以為用戶顯示未讀消息個數。消息計數器通常會顯示在應用程序圖標上。以下代碼為通知添加了消息計數器效果:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setNumber(3);

3.3 進度條

進度條通知是一種在通知欄中顯示進度條的通知。以下代碼為通知添加了進度條效果:

NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setPriority(NotificationCompat.PRIORITY_DEFAULT)
        .setProgress(100, 50, false);

3.4 自定義視圖

還可以使用自定義視圖來創建複雜的通知。以下代碼為通知添加了自定義視圖效果:

RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.custom_notification);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!")
        .setCustomContentView(remoteViews);

四、總結

通知欄是 Android 應用開發中不可或缺的一部分,它能夠向用戶展示未讀消息、提醒等,讓用戶快速進入應用程序。本文介紹了通知欄的基本功能和高級功能,包括展示通知、清除通知、進入應用程序、通知欄摺疊和展開、聲音、震動、懸掛式通知、摺疊式通知、消息計數器、進度條和自定義視圖。

原創文章,作者:LEVRL,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/332235.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LEVRL的頭像LEVRL
上一篇 2025-01-21 17:30
下一篇 2025-01-21 17:30

相關推薦

  • Android ViewPager和ScrollView滑動衝突問題

    Android開發中,ViewPager和ScrollView是兩個常用的控件。但是當它們同時使用時,可能會發生滑動衝突的問題。本文將從多個方面介紹解決Android ViewPa…

    編程 2025-04-28
  • Android如何點擊其他區域收起軟鍵盤

    在Android應用中,當輸入框獲取焦點彈出軟鍵盤後,我們希望能夠點擊其他區域使軟鍵盤消失,以提升用戶體驗。本篇文章將說明如何實現這一功能。 一、獲取焦點並顯示軟鍵盤 在Andro…

    編程 2025-04-28
  • Java實現告警通知的全面解析與示例

    本文將從多個方面詳細闡述如何使用Java實現告警通知,包括如何設置告警規則、如何獲取告警信息、如何發送告警通知等。本文將給出完整的代碼示例,並且介紹如何運行代碼並驗證效果。 一、告…

    編程 2025-04-27
  • Android Studio HUD 實現指南

    本文將會以實例來詳細闡述如何在 Android Studio 中使用 HUD 功能實現菊花等待指示器的效果。 一、引入依賴庫 首先,我們需要在 build.gradle 文件中引入…

    編程 2025-04-27
  • Android和Vue3混合開發方案

    本文將介紹如何將Android和Vue3結合起來進行混合開發,以及其中的優勢和注意事項。 一、環境搭建 在進行混合開發之前,需要搭建好相應的開發環境。首先需要安裝 Android …

    編程 2025-04-27
  • Android Java Utils 可以如何提高你的開發效率

    Android Java Utils 是一款提供了一系列方便實用的工具類的 Java 庫,可以幫助開發者更加高效地進行 Android 開發,提高開發效率。本文將從以下幾個方面對 …

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web服務器。nginx是一個高性能的反向代理web服務器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25

發表回復

登錄後才能評論