android_custom_view模块介绍

Author Avatar
夜孤黎 1月 09, 2018
  • 在其它设备中阅读本文章

CustomView模块中封装了很多自定义组件,也有对于系统组件的扩展方法,同时也包括部分针对AutoLayout的适配组件。

1、BadgeView/AutoBadgeView

可以在任何view上添加的消息提示组件,可通过BadgeFactory中的工厂方法快速生成然后绑定在指定的view上,也可为组件配置具体的参数:

BadgeView bv = BadgeFactory
                  .create(context)
                  //设置消息文字大小
                  .setTextSize(10)
                  //设置消息文字颜色
                  .setTextColor(Color.WHITE)
                  //设置组件大小
                  .setWidthAndHeight(20, 20)
                  //设置背景
                  .setBadgeBackground(Color.RED)
                  //设置组件在所绑定的view上的位置
                  .setBadgeGravity(Gravity.LEFT | Gravity.TOP)
                  //设置组件默认形状
                  .setShape(BadgeView.SHAPE_CIRCLE)
                  //设置消息数量
                  .setBadgeCount(5)
 bv.bind(endView);//绑定view并显示
 bv.unbind();//解除绑定

AutoBadgeViewAutoBadgeFactory适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的BadgeView一致。

2、SmoothCheckBox/AutoSmoothCheckBox

一个带动画效果的自定义CheckBox,使用方法与正常的checkBox相同。

//选中后的颜色
app:scb_colorChecked="#6cf"
//选中后对勾的颜色
app:scb_colorTick="@color/white"
//未选中时的颜色
app:scb_colorUnchecked="@color/white"
//未选中时stoke的颜色
app:scb_colorUncheckedStroke="#d9d9d9"
//未选中时stoke的宽度
app:scb_strokeWidth="2dp"
//动画的持续时间
app:scb_duration="200"

AutoSmoothCheckBox适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的SmoothCheckBox一致。

3、PickerView/AutoPickerView

自定义的单栏时间选择器控件,开发者可通过绘制多个本控件实现时间选择器效果。AutoPickerView适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的PickerView一致。实现效果可如下图:

4、RecyclerViewHelper

一个帮助开发人员构建RecyclerView的基类集合,通过继承与重写已有的adapter或其他基类可以快速地完成RecyclerView的开发,基本的使用方法另附文档说明。集合包中以Auto开头的类与接口均适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算ViewHolder的参数,使用方法与正常的类与接口一致。

5、SwitchButton

一款ios风格的ios风格的switch组件,使用方法和平常的switch基本相同。

//设置thumb的素材
app:switch_thumbDrawable
//设置thumb的颜色
app:switch_thumbColor
//设置thumb的margin
app:switch_thumbMargin 
app:switch_thumbMarginTop
app:switch_thumbMarginBottom
app:switch_thumbMarginLeft
app:switch_thumbMarginRight
//设置thumb的宽
app:switch_thumbWidth
//设置thumb的高
app:switch_thumbHeight
//设置thumb的圆角
app:switch_thumbRadius
//设置背景的圆角
app:switch_backRadius
//设置背景的素材
app:switch_backDrawable
//设置背景的颜色
app:switch_backColor
//设置动画持续时间
app:switch_animationDuration
//设置check为true时的文字显示
app:switch_textOn
//设置check为false时的文字显示
app:switch_textOff

6、ToggleExpandLayout

一个可折叠和展开子view的开关布局控件。它可以将它的子view以阶梯式的展开。使用时需要在xml中声明:

<com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout
        android:id="@+id/toogleLayout"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <View
            android:id="@+id/view1"
            android:layout_width="300dp"
            android:layout_height="80dp"
            android:background="#ffffff"
            android:elevation="2dp"
            android:outlineProvider="bounds"
            >
        </View>
        <View
            android:id="@+id/rootView"
            android:layout_width="300dp"
            android:layout_height="80dp"
            android:background="#ffffff"
            android:elevation="2dp"
            android:outlineProvider="bounds"
            >
        </View>
</com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout>

如果想要多个折叠控件混合使用则需这样声明:

<com.sumavision.android_custom_view.toggleExpandLayout.DropDownLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        >

 <com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout
        android:id="@+id/toogleLayout"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        ...        
        </com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout>

 <com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout
        android:id="@+id/toogleLayout"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        ...  
        </com.sumavision.android_custom_view.toggleExpandLayout.ToggleExpandLayout>
</com.sumavision.android_custom_view.toggleExpandLayout.DropDownLayout>

实现效果可如下图:

7、TreeView

自定义的树形结构ListView,在使用时需要声明一个继承TreeAdapter的adapter设置给ListView,并传入一个继承TreeElement的数据结构列表便可实现TreeView。
实现效果如下图:

8、VerticalSeekBar

竖直的SeekBar。使用方法与平常的seekbar相同。

9、YunTaiButton

自定义的云台控制按钮,分为长按与单次点击两种模式,开发者可按需使用。
实现效果如下图:

10、ClearableEditText/AutoClearableEditText

自定义的EditText,在有内容时显示一键清除按钮,无内容时则不显示。
AutoClearableEditText适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的ClearableEditText一致。
实现效果如下图:

11、MyRadioButton/AutoMyRadioButton

可对内含的图片进行自定义的RadioButton,需要注意的是在设置了clickable为true后才能响应点击事件,具体有以下几种配置:

//设置图片的width
app:rbt_drawableWidth="5dp"
//设置图片的height
app:rbt_drawableHeight="5dp"
//设置图片在按钮文字的上方,一个按钮同时只能设置一个方向的图片
app:rbt_drawableTop="@mipmap/ic_launcher"
//设置图片在按钮文字的左方,一个按钮同时只能设置一个方向的图片          
app:rbt_drawableLeft="@mipmap/ic_launcher"
//设置图片在按钮文字的右方,一个按钮同时只能设置一个方向的图片  
app:rbt_drawableRight="@mipmap/ic_launcher" 
//设置图片在按钮文字的下方,一个按钮同时只能设置一个方向的图片 
app:rbt_drawableBottom="@mipmap/ic_launcher"   

AutoMyRadioButton适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的MyRadioButton一致。

12、KeyChangeSeekBar

可监听遥控器左右方向键的Seekbar,通过设置OnSeekBarKeyDownListener来监听事件,适用于机顶盒应用。

13、MyListView

解决了滑动冲突的ListView。

14、MyViewPager

可选择是否禁止滑动切换的ViewPager,默认开启滑动。

15、MyLoadingMsgView

数据加载异常提示,可与下拉刷新配合使用。

16、MyPopWindow

封装了部分常用设置的PopWindow,简化代码。

17、MyRadioGroup

自定义RadioGroup支持多层嵌套RadioButton。

18、MyMaterialButton/AutoMyMaterialButton

可对内含的图片进行自定义的MaterialButton,具体有以下几种配置:

//设置图片的width
app:amb_drawableWidth="5dp"
//设置图片的height
app:amb_drawableHeight="5dp"
//设置图片在按钮文字的上方,一个按钮同时只能设置一个方向的图片
app:amb_drawableTop="@mipmap/ic_launcher"
//设置图片在按钮文字的左方,一个按钮同时只能设置一个方向的图片          
app:amb_drawableLeft="@mipmap/ic_launcher"
//设置图片在按钮文字的右方,一个按钮同时只能设置一个方向的图片  
app:amb_drawableRight="@mipmap/ic_launcher" 
//设置图片在按钮文字的下方,一个按钮同时只能设置一个方向的图片 
app:amb_drawableBottom="@mipmap/ic_launcher"   

AutoMyMaterialButton适用于使用了AutoLayout的项目,其内部使用了AutoUtils来计算组件的宽高等参数,使用方法与正常的MyMaterialButton一致。

19、com.rey.material.widget.Button

这是18组件所继承的带有material风格的Button,具体有以下几种配置:

//设置波纹效果的类型,有touch、wave两种类型
app:rd_rippleType
//设置动画效果进行到何时才触发按钮的点击事件,有none、untilRelease和afterRelease三种类型
app:rd_delayClick
//设置波纹的颜色
app:rd_rippleColor 
//设置波纹动画的持续时间,单位为毫秒
app:rd_rippleAnimDuration
//波纹的样式,有rectangle和oval两种类型
app:rd_maskType
//波纹的圆角弧度
app:rd_cornerRadius
//波纹的上左角的圆角弧度
app:rd_topLeftCornerRadius
//波纹的上右角的圆角弧度
app:rd_topRightCornerRadius
//波纹的下左角的圆角弧度
app:rd_bottomLeftCornerRadius
//波纹的下右角的圆角弧度
app:rd_bottomRightCornerRadius
//波纹的内边距
app:rd_padding
//波纹的左内边距
app:rd_leftPadding
//波纹的上内边距
app:rd_topPadding
//波纹的右内边距
app:rd_rightPadding
//波纹的下内边距
app:rd_bottomPadding

13组件也能使用这些属性。

20、SelectorButton

可以在xml中直接声明状态变化,省去了在drawable文件夹中新建selector文件的麻烦。具体有以下几种配置:

//设置圆角度 
app:sb_radius="5dp"
//设置左右为半圆, 不用计算radius 
app:sb_round="true"
//设置背景切换动画时长 
app:sb_animationDuration="200"
//设置dash            
app:sb_strokeDashGap="2dp"
//设置dash width 
app:sb_strokeDashWidth="5dp" 
//设置正常显示的边框宽度
app:sb_normalStrokeWidth="2dp" 
//设置按下时显示的边框宽度 
app:sb_pressedStrokeWidth="2dp" 
//设置不可用时(enable = false)显示的边框宽度 
app:sb_unableStrokeWidth="2dp" 
//设置正常显示的边框颜色           
app:sb_normalStrokeColor="@android:color/white" 
//设置按下时显示的边框颜色 
app:sb_pressedStrokeColor="@android:color/white" 
//设置不可用时(enable = false)显示的边框颜色 
app:sb_unableStrokeColor="@android:color/white"
//设置正常显示的文字颜色 
app:sb_normalTextColor="@android:color/white" 
//设置按下状态显示的文字颜色 
app:sb_pressedTextColor="@android:color/white"
//设置不可用时(enable = false)显示的文字颜色 
app:sb_unableTextColor="@android:color/white" 
//设置正常显示的背景颜色            
app:sb_normalBackgroundColor="@color/colorPrimaryDark"
//设置按下状态显示的背景颜色 
app:sb_pressedBackgroundColor="@color/colorPrimaryDark"
//设置不可用时(enable = false)背景颜色 
app:sb_unableBackgroundColor="@color/colorPrimaryDark"

21、AutoGridLayout/AutoRadioGroup

针对原有系统组件的扩展,适用于使用了AutoLayout的项目,使用方法与正常的系统组件一致。

如何使用:

api 'com.sumavision.android_custom_view:android_custom_view:v1.x.x'

查看源码:

svn://192.165.152.13/sumard5/Project/Tetris/trunk/platform/android-platform/AndroidPlatform/android_custom_view

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://yeguli.cn/2018/01/09/android-custom-view模块介绍/