最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android通知欄微技巧一些需要注意的小細(xì)節(jié)

 更新時(shí)間:2018年04月18日 09:07:36   作者:guolin  
這篇文章主要介紹了Android通知欄微技巧,那些你所沒(méi)關(guān)注過(guò)的小細(xì)節(jié),小編把此文分享到腳本之家平臺(tái),需要的朋友可以參考下

為此Android在appcompat-v7庫(kù)中提供了一個(gè)NotificationCompat類來(lái)處理新老版本的兼容問(wèn)題,我們?cè)诰帉懲ㄖδ軙r(shí)都使用NotificationCompat這個(gè)類來(lái)實(shí)現(xiàn),appcompat-v7庫(kù)就會(huì)自動(dòng)幫我們做好所有系統(tǒng)版本的兼容性處理了。一段基本的觸發(fā)通知代碼如下所示:

NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
Notification notification = builder
.setContentTitle("這是通知標(biāo)題")
.setContentText("這是通知內(nèi)容")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.mipmap.ic_launcher)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.build();
manager.notify(1, notification);

可以看到,這里只是把我們平時(shí)使用的Notification.Builder改成了NotificationCompat.Builder而已,其他用法都是一模一樣的,這樣我們的通知就具備各種Android版本的兼容性了。

注意看一下我們給通知設(shè)置的圖標(biāo),一個(gè)小圖標(biāo)、一個(gè)大圖標(biāo),都是使用的R.mipmap.ic_launcher這張圖。其實(shí)很多app都使用的這種做法,即直接拿應(yīng)用程序的icon來(lái)作為通知的圖標(biāo),好像這樣看上去也挺合理的。

現(xiàn)在我使用Android 6.0系統(tǒng)的Nexus 5手機(jī)運(yùn)行這個(gè)程序,并觸發(fā)上面那段通知邏輯,效果如圖下圖所示:

可以看到,通知欄上彈出了一個(gè)通知圖標(biāo)。然后我們將通知欄下拉展開,效果如下圖所示:

效果好像還不錯(cuò)的樣子。但實(shí)際上,我現(xiàn)在是將項(xiàng)目的targetSdkVersion指定成了21以下,即低于5.0系統(tǒng)。如果將targetSdkVersion指定成21或者更高的話,結(jié)果可能就不樂(lè)觀了:

defaultConfig {
  ....
  targetSdkVersion 23
}

這里我們將targetSdkVersion指定成了23,然后重新運(yùn)行程序并觸發(fā)圖標(biāo)邏輯,效果如下圖所示:

恩?這是什么鬼,怎么通知圖標(biāo)變成白白的一個(gè)圓了。下拉之后的大圖效果如下:

好像下拉之后的大圖還算正常,不過(guò)大圖的右下角也有一個(gè)白白的圓。

這到底是為什么呢?實(shí)際上,Android從5.0系統(tǒng)開始,對(duì)于通知欄圖標(biāo)的設(shè)計(jì)進(jìn)行了修改。現(xiàn)在Google要求,所有應(yīng)用程序的通知欄圖標(biāo),應(yīng)該只使用alpha圖層來(lái)進(jìn)行繪制,而不應(yīng)該包括RGB圖層。

說(shuō)的好像很玄乎,什么叫作只使用alpha圖層來(lái)進(jìn)行繪制呢?其實(shí)通俗點(diǎn)來(lái)講,就是讓我們的通知欄圖標(biāo)不要帶顏色就可以了。

恩?不帶顏色!那圖標(biāo)還怎么設(shè)計(jì)?但這就不是我們程序員應(yīng)該考慮的問(wèn)題了,而是應(yīng)該交給項(xiàng)目的UI設(shè)計(jì)師來(lái)想辦法,但我們需要將這個(gè)設(shè)計(jì)需求清楚地告訴設(shè)計(jì)師,因?yàn)樗麄兺ǔ2⒉恢繥oogle的各種標(biāo)準(zhǔn)和要求。

那么我們來(lái)參考一下別的程序都是怎么設(shè)計(jì)通知欄圖標(biāo)的,這是支付寶的通知欄圖標(biāo):

下拉通知之后的效果是這樣的:

然后再看一下網(wǎng)易新聞的通知欄圖標(biāo):

下拉通知之后的效果是這樣的:

可以看出,它們的通知欄小圖都是沒(méi)有RGB色的,圖標(biāo)是只有白色一種顏色,然后借助alpha圖層來(lái)繪制出一個(gè)logo的樣式。

因此,按著這種設(shè)計(jì)要求,我將項(xiàng)目的通知欄圖標(biāo)改成了這個(gè)樣子:

這張圖只用于替換通知的小圖部分,大圖仍然還是用原來(lái)的那樣圖就可以了?,F(xiàn)在重新運(yùn)行一下程序,效果如下圖所示:

這樣看上去效果就好多了吧?然后下拉通知欄之后的效果如下圖所示:

這里我們來(lái)仔細(xì)觀察一下這個(gè)下拉后的大圖,其實(shí)前面大家應(yīng)該也已經(jīng)注意到了,只不過(guò)一直沒(méi)提,在大圖標(biāo)的右下角,還有一個(gè)比較小的圓圈,在這個(gè)圓圈中嵌套著我們?cè)O(shè)置的小圖標(biāo)。

這個(gè)功能是系統(tǒng)自動(dòng)附加的一個(gè)功能,并不需要我們進(jìn)行任何的代碼設(shè)置,可以觀察一下,支付寶、網(wǎng)易新聞也都是有這個(gè)功能的。但是如果我們?cè)倏醋屑?xì)一點(diǎn),你會(huì)發(fā)現(xiàn)網(wǎng)易的圖標(biāo)更好看一些,因?yàn)橄到y(tǒng)給右下角的這個(gè)小圓圈默認(rèn)是設(shè)置成灰色的,和我們的整體色調(diào)并不搭配,而網(wǎng)易則將這個(gè)小圓圈改成了紅色,因此總體視覺效果更好。

那么怎樣修改這個(gè)小圓圈的顏色呢?其實(shí)非常簡(jiǎn)單,只需要在NotificationCompat.Builder中再多連綴一個(gè)setColor()方法就可以了,如下所示:

Notification notification = builder
    ......
    .setColor(Color.parseColor("#EAA935"))
    .build();

現(xiàn)在重新運(yùn)行一下程序,通知欄大圖的具體效果如下圖所示:

怎么樣,現(xiàn)在的效果是不是更棒了?但是這里我還要給大家提個(gè)醒,上面的功能我使用Nexus手機(jī)和三星手機(jī)都測(cè)試過(guò),結(jié)果都是正常的,但是使用小米手機(jī)測(cè)試就比較無(wú)語(yǔ)了,MIUI系統(tǒng)直接無(wú)視我們?cè)O(shè)置的大圖和小圖,一律使用應(yīng)用程序的icon來(lái)作為通知欄圖標(biāo),所以如果你是使用的小米手機(jī),就測(cè)試不出來(lái)上述的各種效果了。其他手機(jī)的兼容性我還沒(méi)有試過(guò),不過(guò)不管怎么樣,我們的代碼都是要這么寫的,至于那些定制過(guò)的系統(tǒng)該如何去解析展示,那是這些第三方廠商的事情,畢竟我們程序員也是控制不了的。

當(dāng)然,如果你手上只有小米手機(jī)的話,也不要絕望,還是可以使用Android模擬器來(lái)測(cè)試這個(gè)功能的。

總結(jié)

以上所述是小編給大家介紹的Android通知欄微技巧一些需要注意的小細(xì)節(jié),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

哈密市| 深水埗区| 克拉玛依市| 基隆市| 通化县| 肇州县| 南江县| 梧州市| 靖远县| 勐海县| 泉州市| 瑞昌市| 邳州市| 通化市| 屯昌县| 桑植县| 蓬溪县| 江孜县| 宜章县| 苍山县| 正阳县| 高淳县| 海安县| 怀化市| 桃园市| 盐池县| 苍山县| 北流市| 吉安县| 乌拉特前旗| 三门县| 洛浦县| 阳东县| 邮箱| 施甸县| 介休市| 乌拉特前旗| 卫辉市| 剑川县| 邯郸市| 哈尔滨市|