看到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的修复方式