安卓APP_ 控件(6)—— Notification通知
摘自:安卓APP_ 控件(6)—— Notification通知
作者:丶PURSUING
發布時間: 2021-04-02 00:30:14
網址:https://blog.csdn.net/weixin_44742824/article/details/115382674
Notification通知的使用
- 一、創建一個NotificationManager
- 二、使用Builder構造器來創建Notification對象
- 三、通知渠道:NotificationCannel
- 四、通過鏈式結構設置notification的屬性
- (1)`setSmallIcon`應該注意的是:
- (2)`setContentIntent`點擊通知后的跳轉意圖
- 五、更多細節在實例注釋中呈現
效果一覽
實現效果:點擊發送通知,系統發來通知;可以通過下拉任務欄進行跳轉查看;也可以直接點擊消息進行跳轉查看;也可以點擊按鈕取消通知。如下圖:
一、創建一個NotificationManager
NotificationManager類是一個通知管理器類,這個對象是由系統維護的服務,是以單例模式的方式獲得,所以一般并不直接實例化這個對象。
在Activity中,可以使用getSystemService方法獲取NotificationManager對象,這個方法可以通過Android系統級服務的句柄返回對應的對象。在這里需要返回NotificationManager,所以直接傳遞NOTIFICATION_SERVICE即可。
具體是實現:
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);- 1
NotificationManager是做格式的強制轉換
二、使用Builder構造器來創建Notification對象
使用NotificationCompat類的Builder構造器來出創建Notification對象,可以保證程序在所有版本上都能正常工作。Android8.0新增了通知渠道這個概念,如果沒有設置,則通知無法在Android8.0的機器上顯示。
Notification notification = new NotificationCompat.Builder(this,"zhua")- 1
context:表示環境
三、通知渠道:NotificationCannel
Android8.0引入了通知渠道,其允許您為要顯示的每種通知類型創建用戶可自定義的渠道。
重要的三個參數:
(1)id:channelld,即為渠道id
(2)name:信息
(3)importance:通知的重要程度
通知重要程度設置是在NotificationManager類:
| NONE | × | × | × | × |
| MIN | √ | × | × | × |
| LOW | √ | × | × | √ |
| DEFAULT | √ | × | √ | √ |
| HIGH | √ | √ | √ | √ |
四、通過鏈式結構設置notification的屬性
即為設置通知屬性。
具體要有哪些屬性后面的實例代碼中給了很詳細的說明。下面對兩個易錯點進行記錄。
(1)setSmallIcon應該注意的是:
從Android5.0系統開始,對于通知欄圖標的設計進行了修改,現在Google要求,所有的應用程序的通知欄圖標,應該只是用alpha圖層來進行繪制,而不應該包括RGB圖層。
要學會看參數,例如下面這個就是要你傳入rbg參數進行顏色的設置
(2)setContentIntent點擊通知后的跳轉意圖
我們設置了一個跳轉的界面,在新的類中,要進行“注冊”(不然死活不會跳轉,也不報錯,很煩)
五、更多細節在實例注釋中呈現
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"><!-- 方法名稱為sendNote,快捷鍵跳轉直接在java中具體實現--><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="sendNote"android:text="發出通知" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="canselNote"android:text="取消通知" /></LinearLayout>MainAvtivity.java
public class MainActivity extends AppCompatActivity {//創建一個全局對象:NotificationManagerprivate NotificationManager manager;//創建一個全局對象:notificationprivate Notification notification;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//使用getSystemService方法獲取NotificationManager對象manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);//如果是8.0及以上,我們才創建這個對象;(之前踩坑了,搞了個4.0版本的工程死活收不到通知)if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){NotificationChannel channel = new NotificationChannel("zhua", "測試通知",NotificationManager.IMPORTANCE_HIGH);//創建了channel如何使用它:用NotificationManager的通知管理類manager.createNotificationChannel(channel);//讓channelid和manager綁定上了關系}//創建跳轉意圖Intent intent = new Intent(this,NotificationActivity.class);//setContentIntent跳轉意圖中需要傳入的參數:pendingIntent PendingIntent pendingIntent = PendingIntent.getActivities(this, 0, new Intent[]{intent}, 0);//直接通過鏈式結構設置notification的屬性(設置通知的屬性)notification = new NotificationCompat.Builder(this,"zhua")//標題(必須).setContentTitle("官方通知")//通知內容(必須).setContentText("華天朱來了")//通知的小圖標(必須)這個圖片不能是RGB的.setSmallIcon(R.drawable.ic_baseline_account_box_24)//通知的大圖標:這個參數需要的是圖片的bitmap類型,所以要進行BitmapFactory轉換.setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.head))//設置通知圖標欄圖標為紅色:setColor傳入參數是argb.setColor(Color.parseColor("#ff0000"))//不是普通的intent,而是pandding intent,要在上面進行創建.setContentIntent(pendingIntent)//點擊通知后通知會取消.setAutoCancel(true).build();}public void sendNote(View view) {//兩個參數,第一個是id,點擊進去發現沒什么要求,隨便寫一個1manager.notify(1,notification);}public void canselNote(View view) {manager.cancel(1); //這個取消通知的id要和上面那個來通知對應} }NotificationActivity.java
//這里自己創建的類,為跳轉意圖,一定要在這個地方alt+enter進行關聯 public class NotificationActivity extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);//做個簡單的打印看一下效果Log.e("zhua", "onCreate: 進入NotificationActivity" );} }總結
以上是生活随笔為你收集整理的安卓APP_ 控件(6)—— Notification通知的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【<咩咩启示录>中的距骨骰低配版】
- 下一篇: java中对map使用entrySet循