日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

安卓APP_ 控件(6)—— Notification通知

發(fā)布時(shí)間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓APP_ 控件(6)—— Notification通知 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘自:安卓APP_ 控件(6)—— Notification通知
作者:丶PURSUING
發(fā)布時(shí)間: 2021-04-02 00:30:14
網(wǎng)址:https://blog.csdn.net/weixin_44742824/article/details/115382674

Notification通知的使用

  • 一、創(chuàng)建一個(gè)NotificationManager
  • 二、使用Builder構(gòu)造器來(lái)創(chuàng)建Notification對(duì)象
  • 三、通知渠道:NotificationCannel
  • 四、通過(guò)鏈?zhǔn)浇Y(jié)構(gòu)設(shè)置notification的屬性
    • (1)`setSmallIcon`應(yīng)該注意的是:
    • (2)`setContentIntent`點(diǎn)擊通知后的跳轉(zhuǎn)意圖
  • 五、更多細(xì)節(jié)在實(shí)例注釋中呈現(xiàn)

效果一覽

實(shí)現(xiàn)效果:點(diǎn)擊發(fā)送通知,系統(tǒng)發(fā)來(lái)通知;可以通過(guò)下拉任務(wù)欄進(jìn)行跳轉(zhuǎn)查看;也可以直接點(diǎn)擊消息進(jìn)行跳轉(zhuǎn)查看;也可以點(diǎn)擊按鈕取消通知。如下圖:

一、創(chuàng)建一個(gè)NotificationManager

NotificationManager類(lèi)是一個(gè)通知管理器類(lèi),這個(gè)對(duì)象是由系統(tǒng)維護(hù)的服務(wù),是以單例模式的方式獲得,所以一般并不直接實(shí)例化這個(gè)對(duì)象。

在A(yíng)ctivity中,可以使用getSystemService方法獲取NotificationManager對(duì)象,這個(gè)方法可以通過(guò)Android系統(tǒng)級(jí)服務(wù)的句柄返回對(duì)應(yīng)的對(duì)象。在這里需要返回NotificationManager,所以直接傳遞NOTIFICATION_SERVICE即可。

具體是實(shí)現(xiàn):

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
  • 1

NotificationManager是做格式的強(qiáng)制轉(zhuǎn)換

二、使用Builder構(gòu)造器來(lái)創(chuàng)建Notification對(duì)象

使用NotificationCompat類(lèi)的Builder構(gòu)造器來(lái)出創(chuàng)建Notification對(duì)象,可以保證程序在所有版本上都能正常工作。Android8.0新增了通知渠道這個(gè)概念,如果沒(méi)有設(shè)置,則通知無(wú)法在A(yíng)ndroid8.0的機(jī)器上顯示。

Notification notification = new NotificationCompat.Builder(this,"zhua")
  • 1

context:表示環(huán)境

三、通知渠道:NotificationCannel

Android8.0引入了通知渠道,其允許您為要顯示的每種通知類(lèi)型創(chuàng)建用戶(hù)可自定義的渠道。


重要的三個(gè)參數(shù):

(1)id:channelld,即為渠道id
(2)name:信息
(3)importance:通知的重要程度

通知重要程度設(shè)置是在NotificationManager類(lèi):

參數(shù)通知彈出提示音狀態(tài)欄
NONE××××
MIN×××
LOW××
DEFAULT×
HIGH

四、通過(guò)鏈?zhǔn)浇Y(jié)構(gòu)設(shè)置notification的屬性

即為設(shè)置通知屬性。

具體要有哪些屬性后面的實(shí)例代碼中給了很詳細(xì)的說(shuō)明。下面對(duì)兩個(gè)易錯(cuò)點(diǎn)進(jìn)行記錄。

(1)setSmallIcon應(yīng)該注意的是:

從Android5.0系統(tǒng)開(kāi)始,對(duì)于通知欄圖標(biāo)的設(shè)計(jì)進(jìn)行了修改,現(xiàn)在Google要求,所有的應(yīng)用程序的通知欄圖標(biāo),應(yīng)該只是用alpha圖層來(lái)進(jìn)行繪制,而不應(yīng)該包括RGB圖層。

要學(xué)會(huì)看參數(shù),例如下面這個(gè)就是要你傳入rbg參數(shù)進(jìn)行顏色的設(shè)置

(2)setContentIntent點(diǎn)擊通知后的跳轉(zhuǎn)意圖

我們?cè)O(shè)置了一個(gè)跳轉(zhuǎn)的界面,在新的類(lèi)中,要進(jìn)行“注冊(cè)”(不然死活不會(huì)跳轉(zhuǎn),也不報(bào)錯(cuò),很煩)

五、更多細(xì)節(jié)在實(shí)例注釋中呈現(xiàn)

activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- 方法名稱(chēng)為sendNote,快捷鍵跳轉(zhuǎn)直接在java中具體實(shí)現(xiàn)--><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="sendNote"android:text="發(fā)出通知" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="canselNote"android:text="取消通知" /></LinearLayout>

MainAvtivity.java

public class MainActivity extends AppCompatActivity {//創(chuàng)建一個(gè)全局對(duì)象:NotificationManagerprivate NotificationManager manager;//創(chuàng)建一個(gè)全局對(duì)象:notificationprivate Notification notification;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//使用getSystemService方法獲取NotificationManager對(duì)象manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//如果是8.0及以上,我們才創(chuàng)建這個(gè)對(duì)象;(之前踩坑了,搞了個(gè)4.0版本的工程死活收不到通知)if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){NotificationChannel channel = new NotificationChannel("zhua", "測(cè)試通知",NotificationManager.IMPORTANCE_HIGH);//創(chuàng)建了channel如何使用它:用NotificationManager的通知管理類(lèi)manager.createNotificationChannel(channel);//讓channelid和manager綁定上了關(guān)系}//創(chuàng)建跳轉(zhuǎn)意圖Intent intent = new Intent(this,NotificationActivity.class);//setContentIntent跳轉(zhuǎn)意圖中需要傳入的參數(shù):pendingIntent PendingIntent pendingIntent = PendingIntent.getActivities(this, 0, new Intent[]{intent}, 0);//直接通過(guò)鏈?zhǔn)浇Y(jié)構(gòu)設(shè)置notification的屬性(設(shè)置通知的屬性)notification = new NotificationCompat.Builder(this,"zhua")//標(biāo)題(必須).setContentTitle("官方通知")//通知內(nèi)容(必須).setContentText("華天朱來(lái)了")//通知的小圖標(biāo)(必須)這個(gè)圖片不能是RGB的.setSmallIcon(R.drawable.ic_baseline_account_box_24)//通知的大圖標(biāo):這個(gè)參數(shù)需要的是圖片的bitmap類(lèi)型,所以要進(jìn)行BitmapFactory轉(zhuǎn)換.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.head))//設(shè)置通知圖標(biāo)欄圖標(biāo)為紅色:setColor傳入?yún)?shù)是argb.setColor(Color.parseColor("#ff0000"))//不是普通的intent,而是pandding intent,要在上面進(jìn)行創(chuàng)建.setContentIntent(pendingIntent)//點(diǎn)擊通知后通知會(huì)取消.setAutoCancel(true).build();}public void sendNote(View view) {//兩個(gè)參數(shù),第一個(gè)是id,點(diǎn)擊進(jìn)去發(fā)現(xiàn)沒(méi)什么要求,隨便寫(xiě)一個(gè)1manager.notify(1,notification);}public void canselNote(View view) {manager.cancel(1); //這個(gè)取消通知的id要和上面那個(gè)來(lái)通知對(duì)應(yīng)} }

NotificationActivity.java

//這里自己創(chuàng)建的類(lèi),為跳轉(zhuǎn)意圖,一定要在這個(gè)地方alt+enter進(jìn)行關(guān)聯(lián) public class NotificationActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//做個(gè)簡(jiǎn)單的打印看一下效果Log.e("zhua", "onCreate: 進(jìn)入NotificationActivity" );} }

總結(jié)

以上是生活随笔為你收集整理的安卓APP_ 控件(6)—— Notification通知的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。