Notification自定義界面
前言
之前在做一個(gè)手機(jī)的播放器,需要做到在通知欄顯示控制播放的界面,如下:

這是讓服務(wù)在前臺(tái)運(yùn)行就可以實(shí)現(xiàn)的(可以參考我的前一篇文章Service在前臺(tái)運(yùn)行),今天我們就要實(shí)現(xiàn)Notification的自定義界面,當(dāng)然就不實(shí)現(xiàn)如上圖所示的了,而是下面一個(gè)簡(jiǎn)單的界面,隨自己的需要搭建自己想要的界面。

可以看到,我實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的界面,包括一個(gè)ImageView和Button,下面我就說(shuō)說(shuō)該如何實(shí)現(xiàn)它,其實(shí)很簡(jiǎn)單。
實(shí)現(xiàn)
首先我們要準(zhǔn)備一個(gè)界面文件:
notification.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:background="#333300" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:paddingLeft="20dp" android:layout_width="70dp" android:layout_height="50dp" android:src="@drawable/ic_qiuda" /> <Button android:layout_marginLeft="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="點(diǎn)擊我" /> </LinearLayout>
然后新建一個(gè)Service的子類(lèi),MyService:
public class MyService extends Service {
public static final String TAG = "MyService";
@Override
public void onCreate() {
super.onCreate();
Notification notification = new Notification(R.drawable.ic_launcher,
"JcMan", System.currentTimeMillis());
RemoteViews view = new RemoteViews(getPackageName(),R.layout.notification);
notification.contentView = view;
startForeground(1, notification);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
可以看到,在onCreate方法里面我們?cè)O(shè)置界面的不再是用LayoutInflater來(lái)得到界面,而是用RemoteViews來(lái)new出來(lái)一個(gè)界面,構(gòu)造方法傳入的是包名和界面資源的ID即可,然后我們把notification.contentView設(shè)置成我們new出來(lái)的自定義界面即可。
小結(jié)
普通的Notification可以用來(lái)進(jìn)行通知,但是當(dāng)有特殊需要的時(shí)候,我們就需要自定義界面,而且有時(shí)候還需要對(duì)自定義的界面添加點(diǎn)擊的方法,如在上圖的界面里面有一個(gè)Button如何對(duì)Button的點(diǎn)擊事件進(jìn)行響應(yīng),這是一個(gè)比較難的問(wèn)題,因?yàn)檫@不是簡(jiǎn)單的setOnClickListener就可以的,需要另外的實(shí)現(xiàn),需要用到廣播機(jī)制,我將會(huì)在下一篇文章中說(shuō)明如何為Notification的自定義界面添加點(diǎn)擊事件。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android使用MediaPlayer和TextureView實(shí)現(xiàn)視頻無(wú)縫切換
這篇文章主要為大家詳細(xì)介紹了Android使用MediaPlayer和TextureView實(shí)現(xiàn)視頻無(wú)縫切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
Android音樂(lè)播放器簡(jiǎn)單實(shí)現(xiàn)案例
我們平時(shí)長(zhǎng)時(shí)間打代碼的時(shí)候肯定會(huì)感到疲憊和乏味,這個(gè)時(shí)候一邊播放自己喜歡的音樂(lè),一邊繼續(xù)打代碼,心情自然也愉快很多。音樂(lè)帶給人的聽(tīng)覺(jué)享受是無(wú)可比擬的,動(dòng)聽(tīng)的音樂(lè)可以愉悅?cè)说纳硇模屓烁臃e極地去熱愛(ài)生活,這篇文章主要介紹了Android音樂(lè)播放器簡(jiǎn)單實(shí)現(xiàn)案例2022-12-12
Android?OpenCV基礎(chǔ)API清晰度亮度識(shí)別檢測(cè)
這篇文章主要為大家介紹了Android?OpenCV基礎(chǔ)API清晰度亮度識(shí)別檢測(cè),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
Android滑動(dòng)刪除數(shù)據(jù)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android滑動(dòng)刪除功能2017-01-01
Android 自定義輸入支付密碼的軟鍵盤(pán)實(shí)例代碼
這篇文章主要介紹了Android 自定義輸入支付密碼的軟鍵盤(pán)實(shí)例代碼的相關(guān)資料,并附簡(jiǎn)單實(shí)例代碼和實(shí)現(xiàn)效果圖,需要的朋友可以參考下2016-11-11
Flutter?將Dio請(qǐng)求轉(zhuǎn)發(fā)原生網(wǎng)絡(luò)庫(kù)的實(shí)現(xiàn)方案
這篇文章主要介紹了Flutter?將Dio請(qǐng)求轉(zhuǎn)發(fā)原生網(wǎng)絡(luò)庫(kù),需要注意添加NativeNetInterceptor,如果有多個(gè)攔截器,例如LogInterceptors等等,需要將NativeNetInterceptor放到最后,需要的朋友可以參考下2022-05-05
Android實(shí)現(xiàn)原生側(cè)滑菜單的超簡(jiǎn)單方式
網(wǎng)上關(guān)于Android實(shí)現(xiàn)側(cè)滑菜單的文章有很多,可是我們這篇文章是給大家分享一種超簡(jiǎn)單的方式,對(duì)大家開(kāi)發(fā)Android具有一定的參考借鑒價(jià)值,有需要的朋友們可以一起來(lái)看看。2016-09-09

