android自定义push通知_Android自定义Notification的一些坑
第一次在簡書發文章,有問題多指教
本篇介紹自定義通知樣式時會遇到的一些坑,本篇旨在記錄坑,而不在全面講解自定義的方法
坑
文字顏色:強烈使用系統定義的文字顏色,否則需要固定背景色
自定義View的尺寸: 建議自適應,因為不同系統高度會有差別
不同系統版本的兼容性處理
詳細講解
文字顏色
首先一個大前提,通知欄的背景色的顏色是不確定的,有深色,也有淺色。
這里分兩種情況說明。
一種是自定義布局的背景色固定,這種情況下可以直接指定文字顏色。但是這種在通知欄的觀感不是很好,比如淺色通知欄,顯示一條黑色通知顯得很突兀,也不好看。
第二種是透明背景色,這時文字顏色就不能固定了,好在系統提供的對應的文字樣式。
原生系統提供了通知欄的適配樣式,這個樣式會保證在通知欄的文字顏色一直是正常可見的。
某些定制系統使用了系統提供的樣式還是會有問題,比如小米6.0的某個版本。其他定制系統也類似,后面有詳細討論
下面先說下如何使用系統樣式來適配
由于5.0引入MeterialDesign,5.0及以上的樣式命名有所更改,所以需要分別設置。
SDK21以下
values/style.xml
標題樣式
android:textAppearance="@android:style/TextAppearance.StatusBar.EventContent.Title"
文字顏色:
android:textAppearance="@android:style/TextAppearance.StatusBar.EventContent"
SDK21及以上
標題顏色
android:textAppearance="@android:style/TextAppearance.Material.Notification.Title"
內容顏色
android:textAppearance="@android:style/TextAppearance.Material.Notification.Info"
注意:
上面的解決方案在實際使用中發現小米的6.0MRA58K版本是暗色通知欄,會導致顏色適配失效,經研究此版本系統樣式采用的仍然是21以下的樣式配置。 這就造成小米和原生系統的適配沖突。
最終經過研究有以下方案可以解決
1,為小米手機做適配,單獨寫一套小米的適配樣式布局。通過判斷手機型號來適配,但是有個比較大的缺點就是如果其他系統也有類似問題那么需要長時間收集各種機型增加判斷條件來適配。這一個積累工作,長期勞心勞神
2,直接不設置文字顏色,這樣的適應性會比較廣一些,但是在小米手機上對某些奇葩一點的主題也可能會導致文字與背景同色
3,再就是上面說的設置固定的背景色,不過據網上了解有些系統也會忽略自定義的背景色,這個倒是可以通過圖片來解決,詳細的就沒做深入探究。
我能說最終還是選擇了不設置文字顏色來解決的么...吐槽一下定制系統。
自定義View的尺寸
首先Android原生系統中定義的樣式大致有兩種,一是普通通知,另一種是4.1以后引入的擴展通知
普通通知高度為64dp,擴展通知高度為256dp。但是由于國內不同定制系統對這兩種高度有不同處理,所以推薦使用自適應的布局,盡量不要固定寬高。
至于通知的寬度,不只受屏幕寬度影響,也受自制系統影響。比如華為系統的通知左側會有時間軸、小米和魅族系統左右會預留padding空間等等。
所以尺寸上盡量做到自適應。
不同系統版本的兼容
擴展布局只支持4.1以上系統,對于4.1以下,可以只設置普通視圖的布局。
對于7.0以上系統一定不要直接使用notification.bigContentView來設置布局,此方法早已廢棄,尤其7.0以后bigContentView可能為空值
一些代碼細節
創建通知可以使用v4包中的NotificatoinCompat.Builder,以兼容11以下版本。
設置自定義布局推薦同時設置普通狀態和擴展狀態的布局,否則有些手機會出現 Bad Notification Exception
builder.setCustomContentView(buildNormalView(pushMessage));
builder.setCustomBigContentView(buildNoImgView(pushMessage));
Android系統提供的富媒體樣式
上面說的都是自定義樣式,這里順便提一下系統目前提供的樣式。
在4.1以下,只有標準模式,就是包含圖標、標題、文字的基本樣式。
4.1及以上增加了擴展視圖,提供了BigText,BigImage兩種樣式
BigText: 在原有標準樣式的基礎上增大了內容文字的區域,可以容納大量文字
BigImg: 在原有基礎上擴展開之后會將圖標展示為大圖的樣式
總結
以上是生活随笔為你收集整理的android自定义push通知_Android自定义Notification的一些坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 万事达信用卡怎么退税 信用卡退税注意事项
- 下一篇: 国产Micro OLED显示芯片突破!0