ActionItemBadge:在actionbar上显示badge数字提示

泡在网上的日子 / 文 发表于2014-11-05 17:26 次阅读 actionbar

介绍:

一个方便你让你在actionbar上显示数字提示的库(这种效果称为badge )。其实现原理是利用了menu菜单资源文件属性actionLayout

运行效果:

使用说明:

按照正常方式创建一个menu.xml ,同事需要添加actionLayout,为了总是让这个菜单项显示出来,添加上showAsAction="always"

1
2
3
4
5
<item
android:id="@+id/item_samplebadge"
android:actionLayout="@layout/menu_badge"
android:showAsAction="always"
android:title="@string/sample_1"/>

activity中

重写onCreateOptionsMenu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
//you can add some logic (hide it if the count == 0)
if(badgeCount > 0) {
ActionItemBadge.update(this, menu.findItem(R.id.item_samplebadge), Iconify.IconValue.fa_android, ActionItemBadge.BadgeStyle.DARKGREY, badgeCount);
} else{
ActionItemBadge.hide(menu.findItem(R.id.item_samplebadge));
}
//If you want to add your ActionItem programmatically you can do this too. You do the following:
new ActionItemBadge.Add().act(this).menu(menu).title(R.string.sample_2).itemDetails(0, SAMPLE2_ID, 1).showAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS).build(ActionItemBadge.BadgeStyle.BLUE_LARGE, 1);
return true;
}

如果你想在用户点击菜单项之后重新更新badge显示的数目,那么在onOptionsItemSelected中调用invalidateOptionsMenu方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.item_samplebadge) {
Toast.makeText(this, R.string.sample_3, Toast.LENGTH_SHORT).show();
badgeCount--;
invalidateOptionsMenu();
return true;
} else if(id == SAMPLE2_ID) {
Toast.makeText(this, R.string.sample_4, Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}

源码下载:http://jcodecraeer.com/a/opensource/2014/1105/1910.html


收藏 赞 (0) 踩 (0)
上一篇:android 绘图之Paint的效果研究
在Paint中有很多的属性可以设置,比如可以设置阴影,颜色过滤等等,这些会产生不同的奇妙效果,今天就对各种属性探索一下。 方法一: //设置绘制的颜色,a代表透明度,r,g,b代表颜色值。setARGB(int a,int r,int g,int b); 这个不多说了,还有两个类似的方
下一篇:android的逐帧动画
逐帧动画是指按照给定的顺序轮流显示一定数目的图像而产生的动画效果。一般应用于比较简单的场景,比如一个监测手机wifi信号强度的应用中,不断的显示wifi信号的强弱程度就比较适合用逐帧动画。 逐帧动画的使用例子: 使用 Animation-list 定义图像元素,注