看到QQ和微信顶部消息有时会有弹窗,想着自己能不能弄个出来,于是百度,发现一个概念:横幅通知,感兴趣的可以去百度。
然后各种苦逼的复制粘贴,发现:小米不能直接通过横幅通知实现该功能,会直接跳转到一个新的页面,根本看不到横幅通知,难道是我眼瞎?
好吧,再找,再git上找到一个,但还是不能用:
https://github.com/zzz40500/HeadsUp
第三个点击直接bug掉了,异常:
no valid smallicon
我于是找源码,发现已经设置了:
HeadsUp headsUp1 = new HeadsUp.Builder(MainActivity.this) .setContentTitle("标题") //要显示通知栏通知,这个一定要设置 .setSmallIcon(R.drawable.icon) //2.3 一定要设置这个参数,负责会报错 .setDefaults(NotificationCompat.DEFAULT_ALL) .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icon)) .setContentIntent(pendingIntent) .setContentText("这个是自定义通知") .buildHeadUp(); 于是查看HeadsUp类,它是这样的: public Builder setSmallIcon(int icon) { headsUp.setIcon(icon); // super.setSmallIcon(icon); return this; } protected Builder setIcon(int icon){ super.setSmallIcon(icon); return this; }好吧,你厉害,把setSmallIcon注释掉了,解开注释,或者修改protected为public,再加一个setIcon。比较好的做法是:
public Builder setSmallIcon(int icon) { super.setSmallIcon(icon); return this; } protected Builder setIcon(int icon){ headsUp.setIcon(icon); return this; } 这样才比较合理。另外,记得在设置开启悬浮窗权限,不然也用不了,以上是个人对HeadsUp的修复方式
