自定义显示小红点的android Button按钮

效果:

 

 

实现原理:

继承自Button的一个控件,小红点和数字,是直接绘制到Canvas上的,总是在右上角。之看以看起来,角标已经超出了Button,是因为在绘制Button的时候,对Canvas进行了缩放。譬如:

 

 

[html] view plain copy

  1. <com.carlos.notificatoinbutton.library.NotificationButton  
  2.     android:id="@+id/button4"  
  3.     android:layout_width="100dp"  
  4.     android:layout_height="100dp"  
  5.     android:layout_marginTop="15dp"  
  6.     android:background="@mipmap/wechat"  
  7.     notButton:circleBgColor="@android:color/holo_red_light"  
  8.     notButton:circleSize="12dp"  
  9.     notButton:textColor="@android:color/holo_green_dark" />  

这样的一个NotificationButton,设置的宽和高为100dp方形,circleSize,就是小红点的大小,为12dp。这样设置的话,实际上,你看到的Button的大小,只有88dp,是总的宽度减去小红点的大小。

 

使用方法:

在android studio中引用:

 

[plain] view plain copy

  1. compile 'com.carlos.notificatoinbutton:buttonlibrary:1.0.5'  


 

 

然后在布局文件中:

 

[html] view plain copy

  1. <com.carlos.notificatoinbutton.library.NotificationButton  
  2.     android:id="@+id/button5"  
  3.     android:layout_width="100dp"  
  4.     android:layout_height="100dp"  
  5.     android:layout_marginTop="15dp"  
  6.     android:background="@mipmap/wechat"  
  7.     notButton:circleBgColor="@android:color/holo_red_light"  
  8.     notButton:circleSize="12dp"  
  9.     notButton:textColor="@android:color/holo_green_dark" />  


因为它是继承自Button,所有Button的属性,都可以使用。除些之外,还有三个自定义属性:

 

[html] view plain copy

  1. <!--小红点的颜色-->  
  2.         notButton:circleBgColor="@android:color/holo_red_light"  
  3.         <!--小红点大小-->  
  4.         notButton:circleSize="12dp"  
  5.         <!--小红点上字的颜色-->  
  6.         notButton:textColor="@android:color/holo_green_dark"  


 

然后是在java代码中:

 

[java] view plain copy

  1. @Override  
  2.    protected void onCreate(Bundle savedInstanceState) {  
  3.        super.onCreate(savedInstanceState);  
  4.        setContentView(R.layout.activity_main);  
  5.        button2 = (NotificationButton) findViewById(R.id.button2);  
  6.        button3 = (NotificationButton) findViewById(R.id.button3);  
  7.        button4 = (NotificationButton) findViewById(R.id.button4);  
  8.        button5 = (NotificationButton) findViewById(R.id.button5);  
  9.        button2.setNotificationNumber(120);  
  10.        button3.setNotificationNumber(85);  
  11.        button4.setNotificationNumber(9);  
  12.        button5.setNotificationNumber(0);  
  13.    }  


只有一个方法,setNotificationNumber方法,设置了它,就可以直接显示通知数量了,

大于99的,显示99+,

小于等于0的,不显示。

 

源代码地址:

 

https://github.com/ws123/NotificationButton

转载于:https://my.oschina.net/u/1177694/blog/1604924

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值