使用BadgeView的流程以及空指针的解决

BadgeView

介绍

BadgeView是一个Android库,它可以让你在视图的角落上显示一个小气泡,以显示一些额外的信息,例如未读消息数或新消息通知。它可以很容易地集成到你的应用程序中,并且可以在适配器中使用,以便在列表或网格视图中显示小气泡。你可以使用BadgeView库中提供的方法来设置小气泡的大小、颜色、文本等属性,以满足你的需求。

添加库

第一种方式: 在项目APP模块的build.gradle文件中导入对应的包。

dependencies {
    
    
    implementation 'com.nex3z:flow-layout:1.2.3'
    implementation 'q.rorbin:badgeview:1.1.2'
}

第二种方式: 直接将BadgeView的jar包放到项目的libs文件夹中,然后右键jar包,选择Add As Library,就可以直接使用。

使用示例

BadgeView badge = new BadgeView(this, view);

// 设置气泡中显示的内容,5
badge.setText("5");

// 设置气泡位于控件右上角
badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
// 设置气泡外边距
badge.setBadgeMargin(10);
// 设置气泡大小
badge.setTextSize(12);
// 显示气泡
badge.show();

方法介绍

其中有些方法以及被修改,有些也被删除无法使用,自己根据情况来看。

1.  setBadgeCount(int count):设置小气泡中显示的数字或文本。例如,setBadgeCount(3)将在小气泡中显示数字32.  setBadgeText(String text):设置小气泡中显示的文本。例如,setBadgeText("New")将在小气泡中显示文本"New"3.  setBadgeBackgroundColor(int color):设置小气泡的背景颜色。例如,setBadgeBackgroundColor(Color.RED)将将小气泡的背景颜色设置为红色。

4.  setBadgeTextColor(int color):设置小气泡中文本的颜色。例如,setBadgeTextColor(Color.WHITE)将将小气泡中文本的颜色设置为白色。

5.  setBadgePadding(float padding, boolean isDp):设置小气泡的内边距。例如,setBadgePadding(5, true)将将小气泡的内边距设置为5dp。

6.  setBadgeMargin(float horizontalMargin, float verticalMargin):设置小气泡的外边距。例如,setBadgeMargin(10, 5)将将小气泡的水平外边距设置为10px,垂直外边距设置为5px。

7.  setBadgeGravity(int gravity):设置小气泡的位置。例如,setBadgeGravity(Gravity.END | Gravity.TOP)将将小气泡放置在目标视图的右上角。

8.  setBadgeTextSize(float size, boolean isSp):设置小气泡中文本的大小。例如,setBadgeTextSize(12, true)将将小气泡中文本的大小设置为12sp。

9.  setExactMode(boolean isExact):设置小气泡是否为精确模式。如果设置为true,则小气泡的大小将根据其内容自动调整。如果设置为false,则小气泡的大小将始终保持不变。默认值为false10. setBadgeBackground(Drawable drawable):设置小气泡的背景。你可以使用一个Drawable对象来设置小气泡的背景,例如一个圆形或矩形。默认情况下,小气泡的背景是一个圆形。

11. setShape(int shape):设置小气泡的形状。你可以使用BadgeView.SHAPE_RECTANGLE或BadgeView.SHAPE_OVAL来设置小气泡的形状。默认情况下,小气泡的形状是圆形。

12. setStroke(int color, float width, boolean isDp):设置小气泡的边框。你可以使用一个颜色和宽度来设置小气泡的边框。例如,setStroke(Color.RED, 2, true)将设置小气泡的边框为红色,宽度为2dp。

13. setOnDragStateChangedListener(OnDragStateChangedListener listener):设置小气泡的拖动状态监听器。你可以使用这个监听器来监听小气泡的拖动状态,例如当小气泡被拖动时,你可以更新它的位置。

14. setBadgeAnimationType(int animationType):设置小气泡的动画类型。你可以使用BadgeView.ANIMATION_TYPE_NONE、BadgeView.ANIMATION_TYPE_SCALE或BadgeView.ANIMATION_TYPE_ALPHA来设置小气泡的动画类型。默认情况下,小气泡没有动画。

15. setBadgeAnimationDuration(long duration):设置小气泡的动画持续时间。你可以使用一个长整型值来设置小气泡的动画持续时间,单位为毫秒。默认情况下,小气泡的动画持续时间为200毫秒。

16. toggle(boolean animate):切换小气泡的可见性。如果小气泡当前可见,则调用此方法将使其不可见。如果小气泡当前不可见,则调用此方法将使其可见。你可以使用animate参数来指定是否使用动画来切换小气泡的可见性。

17. show(boolean animate):显示小气泡。如果小气泡当前不可见,则调用此方法将使其可见。你可以使用animate参数来指定是否使用动画来显示小气泡。

18. hide(boolean animate):隐藏小气泡。如果小气泡当前可见,则调用此方法将使其不可见。你可以使用animate参数来指定是否使用动画来隐藏小气泡。

19. setBadgeGravityOffset(float offset, boolean isDp):设置小气泡的位置偏移量。你可以使用一个偏移量来微调小气泡的位置。例如,setBadgeGravityOffset(5, true)将将小气泡的位置向下偏移5dp。

20. setBadgeOnItemClickListener(OnClickListener listener):设置小气泡的点击事件监听器。你可以使用这个监听器来监听小气泡的点击事件,例如当小气泡被点击时,你可以执行一些操作。

21. setBadgeOnDragListener(OnDragStateChangedListener listener):设置小气泡的拖动事件监听器。你可以使用这个监听器来监听小气泡的拖动事件,例如当小气泡被拖动时,你可以执行一些操作。

22. setBadgeAnimation(Animation animation):设置小气泡的动画。你可以使用一个Animation对象来设置小气泡的动画,例如一个旋转或缩放动画。

23. setBadgeNumber(int number):设置小气泡中显示的数字。与setBadgeCount()方法类似,但是该方法只能显示数字。

24. setBadgeDrawable(Drawable drawable):设置小气泡中显示的Drawable对象。你可以使用一个Drawable对象来设置小气泡中显示的图标或图片。

25. setBadgeShowShadow(boolean showShadow):设置小气泡是否显示阴影。如果设置为true,则小气泡将显示阴影。默认情况下,小气泡不显示阴影。

26. setBadgeOvalAfterFirst(boolean ovalAfterFirst):设置小气泡是否为椭圆形。如果设置为true,则小气泡将在第一次显示后变为椭圆形。默认情况下,小气泡为圆形。

27. setBadgePadding(int left, int top, int right, int bottom):设置小气泡的内边距。你可以使用四个整型值来设置小气泡的内边距,分别表示左、上、右、下四个方向的内边距。

28. setBadgeTextFont(Typeface typeface):设置小气泡中文本的字体。你可以使用一个Typeface对象来设置小气泡中文本的字体。

29. setBadgeBorderColor(int color):设置小气泡的边框颜色。例如,setBadgeBorderColor(Color.BLUE)将设置小气泡的边框颜色为蓝色。

30. setBadgeBorderWidth(float width, boolean isDp):设置小气泡的边框宽度。例如,setBadgeBorderWidth(2, true)将设置小气泡的边框宽度为2dp。

31. setBadgeCornerRadius(float radius, boolean isDp):设置小气泡的圆角半径。例如,setBadgeCornerRadius(5, true)将设置小气泡的圆角半径为5dp。

32. setBadgeScaleType(ImageView.ScaleType scaleType):设置小气泡中显示的图片的缩放类型。例如,setBadgeScaleType(ImageView.ScaleType.CENTER_INSIDE)将设置小气泡中显示的图片的缩放类型为居中缩放。

33. setBadgeDrawableSize(int width, int height, boolean isDp):设置小气泡中显示的Drawable对象的大小。例如,setBadgeDrawableSize(30, 30, true)将设置小气泡中显示的Drawable对象的大小为30dp x 30dp。

34. setBadgeAnimationInterpolator(Interpolator interpolator):设置小气泡的动画插值器。你可以使用一个Interpolator对象来设置小气泡的动画插值器,例如一个加速或减速插值器。

35. setBadgeAnimationDelay(long delay):设置小气泡的动画延迟时间。你可以使用一个长整型值来设置小气泡的动画延迟时间,单位为毫秒。默认情况下,小气泡的动画延迟时间为0毫秒。

36. setBadgeAnimationRepeat(int repeatCount):设置小气泡的动画重复次数。你可以使用一个整型值来设置小气泡的动画重复次数。默认情况下,小气泡的动画不重复。

37. setBadgeAnimationRepeatMode(int repeatMode):设置小气泡的动画重复模式。你可以使用Animation.RESTART或Animation.REVERSE来设置小气泡的动画重复模式。默认情况下,小气泡的动画重复模式为Animation.RESTART。

38. setBadgeAnimationListener(Animation.AnimationListener listener):设置小气泡的动画监听器。你可以使用这个监听器来监听小气泡的动画事件,例如当小气泡的动画开始或结束时,你可以执行一些操作。

39. setBadgeEnabled(boolean enabled):设置小气泡是否可用。如果设置为false,则小气泡将不可见且不响应任何事件。默认情况下,小气泡可用。

40. setBadgeMargin(float horizontalMargin, float verticalMargin, boolean isDp):设置小气泡的外边距。你可以使用两个浮点型值来设置小气泡的水平和垂直外边距,分别表示像素或dp值。例如,setBadgeMargin(10, 5, true)将将小气泡的水平外边距设置为10dp,垂直外边距设置为5dp。

使用过程中遇到的问题

场景一

一个fragment页面,里面有一个RecyclerView控件,需要写adapter来添加数据,在这个adapter中添加的是一个FrameLayout控件(就相当于一个List中套着List),我需要给最小的List中每个数据右上角显示气泡效果。

代码

activity中的代码,adapter中,

BadgeView badge = new BadgeView(activity, (FrameLayout) holder.getView(R.id.pageItem));

badge.setText("10");
badge.setBadgePosition(BadgeView.POSITION_TOP_RIGHT);
badge.setBadgeMargin(10);
badge.setTextSize(12);

badge.show();

错误

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.ViewGroup.indexOfChild(android.view.View)' on a null object reference

显示报错行数对应的代码:

BadgeView badge = new BadgeView(activity, (FrameLayout) holder.getView(R.id.pageItem));

解决

这里的错误并不是说什么activity为null,也不是getView() 方法返回为null导致的报错。
而是我的FrameLayout控件是这个layout文件中最外层的布局,所以使用后会报这个错误,需要使用里面一层的控件去绑定气泡效果

猜你喜欢

转载自blog.csdn.net/jxj960417/article/details/131326994