溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析

發(fā)布時(shí)間:2020-07-01 09:14:15 來源:億速云 閱讀:741 作者:清晨 欄目:開發(fā)技術(shù)

小編給大家分享一下android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

實(shí)現(xiàn)常駐通知欄時(shí)遇到的問題:

無論如何就是不顯示通知,查看日志發(fā)現(xiàn)貌似報(bào)錯(cuò)了:

2020-06-28 14:11:34.923 6387-6387/xxx E/CrashReport: android.app.RemoteServiceException: Bad notification posted from package xxx: Couldn't inflate contentViewsandroid.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class android.support.constraint.ConstraintLayout
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1944)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:192)
        at android.app.ActivityThread.main(ActivityThread.java:6815)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:818)

說的是布局報(bào)錯(cuò),所使用的布局如下:

android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析

 根據(jù)報(bào)錯(cuò)信息來看,就是這個(gè)

android.support.constraint.ConstraintLayout

的問題了。

然后將布局的根view修改為RelativeLayout。

運(yùn)行,報(bào)錯(cuò),,,,納尼?

2020-06-28 14:24:02.622 11436-11436/xxx E/CrashReport: android.app.RemoteServiceException: Bad notification posted from package xxx: Couldn't inflate contentViewsandroid.view.InflateException: Binary XML file line #2: Binary XML file line #2: You must supply a layout_height attribute.
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1944)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:192)
        at android.app.ActivityThread.main(ActivityThread.java:6815)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:818)

雖然繼續(xù)報(bào)錯(cuò),但是發(fā)現(xiàn)跟第一次報(bào)的錯(cuò)不同了,說明第一個(gè)報(bào)錯(cuò)問題解決。

那么來細(xì)看第二個(gè)報(bào)錯(cuò)信息:

Binary XML file line #2: You must supply a layout_height attribute.

看信息是說布局中缺少layout_height屬性,但是確認(rèn)布局中設(shè)置了這屬性啊。。。

<&#63;xml version="1.0" encoding="utf-8"&#63;>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="@dimen/dp_74"
  android:background="@drawable/shape_bg_resident_notify">
 
 <ImageView
   android:id="@+id/iv_resident_weather"
   android:layout_width="@dimen/dp_45"
   android:layout_height="@dimen/dp_45"
   android:layout_marginStart="@dimen/dp_10"
   android:background="@mipmap/weather_icon_blue_big_cloudy"
   android:layout_centerVertical="true"/>
 
 <TextView
   android:id="@+id/tv_resident_weather_temp"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="28"
   android:textSize="@dimen/sp_40"
   android:textColor="#ff333333"
   android:layout_toEndOf="@+id/iv_resident_weather"
   android:layout_centerVertical="true"
   android:layout_marginStart="@dimen/dp_5"/>
 
 <TextView
   android:id="@+id/tv_resident_degree"
   android:layout_width="@dimen/dp_6"
   android:layout_height="@dimen/dp_6"
   android:layout_marginStart="@dimen/dp_3"
   android:layout_marginTop="@dimen/dp_24"
   android:layout_toEndOf="@+id/tv_resident_weather_temp"
   android:background="@drawable/shape_resident_weather_temp"/>
 
 <TextView
   android:id="@+id/tv_resident_weather_cond"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="多云轉(zhuǎn)晴"
   android:textSize="@dimen/sp_16"
   android:textColor="@color/color_333333"
   android:layout_marginTop="@dimen/dp_14"
   android:layout_marginStart="@dimen/dp_6"
   android:layout_toEndOf="@+id/tv_resident_degree" />
 
 <TextView
   android:id="@+id/tv_resident_temp_range"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="21~34℃"
   android:textColor="@color/color_333333"
   android:textSize="@dimen/sp_16"
   android:layout_marginTop="@dimen/dp_5"
   android:layout_below="@+id/tv_resident_weather_cond"
   android:layout_toEndOf="@+id/tv_resident_degree"
   android:layout_marginStart="@dimen/dp_6"/>
 
 <TextView
   android:id="@+id/tv_resident_aqi"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="空氣優(yōu)"
   android:textSize="@dimen/sp_16"
   android:textColor="@color/color_333333"
   android:layout_alignParentEnd="true"
   android:layout_marginTop="14dp"
   android:layout_marginEnd="@dimen/dp_10"/>
 
 <ImageView
   android:id="@+id/iv_resident_aqi"
   android:layout_width="@dimen/dp_18"
   android:layout_height="@dimen/dp_18"
   android:src="@drawable/ic_icon_aqi"
   android:layout_toStartOf="@+id/tv_resident_aqi"
   android:layout_marginEnd="@dimen/dp_5"
   android:layout_marginTop="@dimen/dp_16"/>
 
 <TextView
   android:id="@+id/tv_resident_desc"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:text="浦東新區(qū) 14:33發(fā)布"
   android:textSize="@dimen/sp_12"
   android:textColor="@color/color_999999"
   android:layout_marginEnd="@dimen/dp_10"
   android:layout_alignParentEnd="true"
   android:layout_below="@+id/tv_resident_aqi"
   android:layout_marginTop="@dimen/dp_11"/>
 
</RelativeLayout>

莫名奇妙啊簡(jiǎn)直

然后仔細(xì)想想可能的原因:難不成是因?yàn)榉直媛蔬m配的問題?

就是沒有匹配到合適的分辨率的尺寸。那就試一下,把布局中所有引用@dimen的地方直接改為使用尺寸。

運(yùn)行,成功!?。?/p>

android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析

問題:發(fā)現(xiàn)有個(gè)布局上的問題

自定義通知欄設(shè)置了背景,寬度是match_parent,但是發(fā)現(xiàn)在某些手機(jī)上,如小米6(截圖所示),可以看到寬度竟然沒有充滿全屏。

但是在華為, vivo等手機(jī)上正常。

那就把這個(gè)背景去掉,自適應(yīng)好了。

android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析

看完了這篇文章,相信你對(duì)android實(shí)現(xiàn)常駐通知欄報(bào)的案例分析有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI