一行代碼給你的控件加上小徽章

一行代碼給你的控件加上徽章(Badge)

不廢話,先上圖

BadgeView

其實在開發眾多APP中,可能我們都需要用到這種BadgeView控件,以前可能是在需要的地方加個圖標上去,這樣每次有這樣的需求的時候就需要在布局里寫個控件上去,很麻煩。網上看了其他庫也是在封裝成一個父布局控件,在XML里面還需要寫一次。后面想能不能不用綁定布局直接以一種最簡單的辦法加上這個徽章。于是我的BadgeView誕生了。

先說使用方法

復雜一點的寫法:

BadgeFactory.create(this) .setTextColor(Color.White) .setWidthAndHeight(25,25) .setBadgeBackground(Color.Red) .setTextSize(10) .setBadgeGravity(Gravity.Right|Gravity.Top) .setBadgeCount(20) .setShape(BadgeView.SHAPE_CIRCLE) .setSpace(10,10) //設置綁定的view和badgeview之間的空隙 .bind(view);

BadgeFactory內置了幾個封裝好的構造方法,可以直接一步到位,于是:

BadgeFactory.createDot(this).setBadgeCount(20).bind(imageView); BadgeFactory.createCircle(this).setBadgeCount(20).bind(imageView); BadgeFactory.createRectangle(this).setBadgeCount(20).bind(imageView); BadgeFactory.createOval(this).setBadgeCount(20).bind(imageView); BadgeFactory.createSquare(this).setBadgeCount(20).bind(imageView); BadgeFactory.createRoundRect(this).setBadgeCount(20).bind(imageView);

是不是覺得很簡單多了,不再需要寫進XML布局。當你需要取消綁定的時候直接調用

badgeView.unbind();

原理

其實原理也很簡單,首先判斷要綁定的view是否有父布局包裹著,有就取出view,將view和badgeview包裹一起之后再放回去。

先取出view并判斷在父布局中的位置

ViewGroupparentContainer=(ViewGroup) view.getParent(); int viewIndex=((ViewGroup) view.getParent()).indexOfChild(view); ((ViewGroup) view.getParent()).removeView(view);

然后設置一些寬高位置屬性之后(代碼太多就不貼了),最后將兩個view放進一個FrameLayout里面,然后FrameLayout添加進原來的布局中。

container.addView(view); container.addView(this); parentContainer.addView(container, viewIndex);

想要更詳細了解控件,可以直接去github上查看
傳送門
各位看官覺老爺得不錯star小弟一波,(__) 。同時希望關注下我的其他項目。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,117評論 25 708
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,510評論 0 17
  • 昨天看完劉媛媛的《我不懼怕成為這樣強硬的姑娘》,一個90的女孩,用自己的努力和頭腦,把自己的人生譜寫成一個絕地反擊...
    木樨木閱讀 269評論 0 5
  • 21XX年,科學家們在人體大腦的研究中取得了極大的進步! 每個人都能開發出一種異能,這種玄之又玄的東西沒有人能掌控...
    癮輪子閱讀 401評論 0 1
  • 每一次和你分開總想說些讓自己賴著留下的理由相聚的時間太短歸去的路途太遠我一步一步靜靜走 每一次過交叉路都會遇到亮著...
    蝦米醬Wow閱讀 254評論 0 1