• Stars
    star
    492
  • Rank 89,476 (Top 2 %)
  • Language
    Java
  • Created about 7 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

本库主要提供一个简单易用的自定义分段控件,方便快速实现分段效果,支持xml配置、代码配置、分段规则按均分/比例分、数字分段、文本分段、渐变分段、bar条样式正常/圆形/三角形,segment文字样式、进度设置、进度标记类型设置、分段描述设置、其它更多自定义设置等功能。

EasySegmentedBarView

本库主要提供一个简单易用的自定义分段控件,方便快速实现分段效果,支持xml配置、代码配置、分段规则按均分/比例分、数字分段、文本分段、渐变分段、bar条样式正常/圆形/三角形,segment文字样式、进度设置、进度指示标记类型设置、分段描述设置、分段间距、其它更多自定义设置等功能。

功能

  • 支持xml配置;
  • 支持通过代码配置;
  • 支持bar条分段规则按均分/比例分;
  • 支持数字分段、文本分段;
  • 支持bar条渐变分段;
  • 支持设置bar条side样式正常/圆形/三角形;
  • 支持segment文字样式;
  • 支持进度设置,unit单位显示,进度为数字或指定文本;
  • 支持进度指示标记类型设置,上部显示/覆盖叠加显示;
  • 支持进度指示三角形是否显示;
  • 支持分段间距设置;
  • 支持其它更多自定义设置、包括颜色、长宽、间距等;

关于我

github csdn

联系方式

本群旨在为使用我github项目的人提供方便,如果遇到问题欢迎在群里提问。

欢迎加入QQ交流群(Q1群已满,请加入Q2群)

演示(请star支持)

版本说明

release

Demo下载

downloads

用法介绍

build.gradle设置

dependencies {
 compile 'com.zhouyou:segmentedbar:1.0.9'
}

想查看所有版本,请点击下面地址。

jcenter

在xml布局中

<com.zhouyou.view.segmentedbar.SegmentedBarView
                android:id="@+id/barView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="5dp"
                android:paddingTop="5dp"
                app:sbv_empty_segment_text="No segments"
                app:sbv_segment_gap_width="5dp"
                app:sbv_segment_rule="average"
                app:sbv_segment_text_size="15sp"
                app:sbv_show_description_text="true"
                app:sbv_side_style="rounded"
                app:sbv_side_text_style="twoSided"
                app:sbv_value_sign_height="30dp"
                app:sbv_value_sign_round="8dp"
                app:sbv_value_sign_width="100dp"
                />

具体属性设置

属性 类型 默认值 说明
sbv_side_style enum rounded 分段条样式normal/rounded/angle,normal:正常样式 rounded:圆角样式 angle:三角样式
sbv_sliderType enum 进度框 支持设置:Sign/Slider Sign:进度框指示,在分段条上部 Slider:滑块指示,覆盖在分段条上
sbv_sliderImg reference 没有默认图片 设置sbv_sliderType属性为Slider模式时,需要设置图片,例如:app:sbv_sliderImg="@mipmap/slider"
sbv_segment_gap_width dimension 2dp 每个分段之间的间隙,如果不需要可以设置0dp
sbv_side_text_style enum oneSided 分段条上文字显示样式oneSided/twoSided oneSided例如:<50 twoSided 例如:40-60
sbv_segment_text_size dimension 14sp 分段条上文字颜色
sbv_bar_height dimension 24dp 分段条高度
sbv_show_segment_text boolean true (显示) 是否显示分段条上文字
sbv_show_description_text boolean false(不显示) 是否显示分段条底部说明文字
sbv_show_description_top_text boolean false(不显示) 是否显示分段条上部说明文字
sbv_segment_bg boolean false(不显示) 是否显示分段条背景
sbv_segment_startcolor color 红色 渐变背景的起始颜色(sbv_segment_bg属性为true才起作用 )
sbv_segment_endcolor color 绿色 渐变背景的结束颜色(sbv_segment_bg属性为true才起作用 )
sbv_empty_segment_text string Empty 空分段展示的提示文字
sbv_empty_segment_background color #858585 空分段bar条的背景颜色
sbv_value_sign_background color #7492E2 进度块背景颜色
sbv_value_sign_border_color color #7492E2 进度块边框颜色
sbv_value_text_size dimension 14sp 进度文字大小
sbv_value_sign_border_size dimension 2dp 分段条上部value背景框边框粗细
sbv_value_sign_height dimension 32dp 进度块高度
sbv_value_sign_width dimension 72dp 进度块宽度
sbv_value_sign_round dimension 4dp 进度块圆角大小
sbv_arrow_height dimension 5dp 进度块上三角指示高度
sbv_arrow_width dimension 10dp 进度块上三角指示宽度
sbv_show_sign_boder boolean false(不显示) 是否显示进度块边框
sbv_description_text_color color Color.DKGRAY 描述文字字体颜色
sbv_description_text_size dimension 14sp 描述文字字体大小
sbv_description_box_height dimension 24dp 分段条上部描述文字方块高度
sbv_description_box_top_height dimension 24dp 分段条底部描述文字方块高度
sbv_descriptionAlign enum Center 分段条底部描述文字对齐方式支持Center/Both模式,Center:居中显示 ,Both:两端显示
sbv_descriptionTopAlign enum Center 分段条上部部描述文字对齐方式支持Center/Both模式,Center:居中显示 ,Both:两端显示
sbv_segment_rule enum average 设置分段规则scale/average模式,scale:按比例分段 average:平均分段

在代码中

方式一

       SegmentedBarView barView = (SegmentedBarView) findViewById(R.id.barView);
        ArrayList<Segment> segments = new ArrayList<>();
        Segment segment = new Segment(0, 4.5f, "Low", Color.parseColor("#EF3D2F"));
        segments.add(segment);
        Segment segment2 = new Segment(4.5f, 9.5f, "Optimal", Color.parseColor("#8CC63E"));
        segments.add(segment2);
        Segment segment3 = new Segment(9.5f, 20f, "High", Color.parseColor("#EF3D2F"));
        segments.add(segment3);
        barView.setValueWithUnit(13.96f, "10<sup>12</sup>/l");
        //barView.setSegmentSideRule(SegmentedBarViewSideRule.average);//通过代码设置规则
        //barView.setValue(13.96f);
        //barView.setValue(13.96f,"Optimal");
        barView.setSegments(segments);

方式二

       SegmentedBarView barView = new SegmentedBarView(this);
        ArrayList<Segment> segments = new ArrayList<>();
        Segment segment = new Segment(0, 4.5f, "Low", Color.parseColor("#EF3D2F"));
        segments.add(segment);
        Segment segment2 = new Segment(4.5f, 6.5f, "Optimal", Color.parseColor("#8CC63E"));
        segments.add(segment2);
        Segment segment3 = new Segment(6.5f, 20f, "High", Color.parseColor("#EF3D2F"));
        segments.add(segment3);
        barView.setValue(4.96f);
        barView.setUnit("m");
        barView.setSideTextStyle(SegmentedBarViewSideTextStyle.TWO_SIDED);
        barView.setSideStyle(SegmentedBarViewSideStyle.ROUNDED);
        barView.setSegments(segments);
        barView.setShowDescriptionText(false);
        barView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        barView.setPadding(0, getResources().getDimensionPixelSize(R.dimen.vertical_padding), 0, 0);
        sideStyleLayout.addView(barView);

方式三

        ArrayList<Segment> segments = new ArrayList<>();
        Segment segment = new Segment(0, 4.5f, "Low", Color.parseColor("#EF3D2F"));
        segments.add(segment);
        Segment segment2 = new Segment(4.5f, 6.5f, "Optimal", Color.parseColor("#8CC63E"));
        segments.add(segment2);
        Segment segment3 = new Segment(6.5f, 20f, "High", Color.parseColor("#EF3D2F"));
        segments.add(segment3);
        SegmentedBarView barView = SegmentedBarView.builder(this)
                .segments(segments)
                .value(5.25f)
                .unit("ml<sup>2</sup>")
                .showDescriptionText(true)
                .sideStyle(SegmentedBarViewSideStyle.ANGLE)
                .build();
        barView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        barView.setPadding(0, getResources().getDimensionPixelSize(R.dimen.vertical_padding), 0, 0);
        javaCodeLayout.addView(barView);

具体方法设置

方法 说明
setBarHeight(int barHeight) 设置分段条高度
setDescriptionBoxHeight(int descriptionBoxHeight) 分段条底部部描述文字方块高度
setDescriptionTextColor(int descriptionTextColor) 分段条底部描述文字颜色
setDescriptionTextSize(int descriptionTextSize) 分段条底部描述文字字体大小
setDrawSegmentBg(boolean drawSegmentBg) 设置是否显示分段条背景
setEmptySegmentColor(int emptySegmentColor) 设置没有分段时分段条颜色
setGapWidth(int gapWidth) 设置分段之间的间距
setGradientBgSegmentColor(int startColor, int endColor) 设置分段条背景的渐变色,启始颜色值和结束颜色值
setSegments(List segments) 设置分段集合
setSegmentSideRule(int sideRule) 设置分段规则scale/average模式,scale:按比例分段 average:平均分段
setSegmentTextColor(int segmentTextColor) 分段条上文字颜色
setSegmentTextSize(int segmentTextSize) 分段条上文字字体大小
setShowDescriptionText(boolean showDescriptionText) 是否显示分段条底部的描述文字
setShowSegmentText(boolean showSegmentText) 是否显示分段条上的文字
setSideStyle(int sideStyle) 分段条样式normal/rounded/angle,normal:正常样式 rounded:圆角样式 angle:三角样式 ,例如:setSideStyle(SegmentedBarViewSideStyle.NORMAL)
setSideTextStyle(int sideTextStyle) 分段条上文字显示样式SegmentedBarViewSideTextStyle.TWO_SIDEDSegmentedBarViewSideTextStyle.ONE_SIDED
setUnit(String unit) 设置单位 ,例如:"ml<sup>2</sup>"
setValue(Float value) 设置当前进度值
setValue(float value, String valueText) 设置当前进度值,例如(80,“优秀”),进度框上文字不会显示80,会显示“优秀”,主要用于转换使用
setValueSegment(Integer valueSegment) 设置文字分段时,进度位置,例如:分3段,从0开始 ValueSegment=1,表示进度块在第二个位置上展示
setValueSegmentText(String valueSegmentText) 设置分段进度块上的文字描述,配合setValueSegment使用,只针对文字分段没有数字进度,具体看Demo4,非数字分段
setValueSignColor(int valueSignColor) 进度框背景颜色
setValueSignSize(int width, int height) 进度框大小设置
setValueTextColor(int valueTextColor) 进度框上文字字体颜色
setValueTextSize(int valueTextSize) 进度框上文字字体大小
setValueWithUnit(Float value, String unitHtml) 设置有单位的进度

Other

其它更多设置和使用方法,请参考Demo

感谢

在此感谢SegmentedBarView-Android作者提供的开源库,对于本库的完成提供了很大的帮助。

More Repositories

1

RxEasyHttp

本库是一款基于RxJava2+Retrofit2实现简单易用的网络请求框架,结合android平台特性的网络封装库,采用api链式调用一点到底,集成cookie管理,多种缓存模式,极简https配置,上传下载进度显示,请求错误自动重试,请求携带token、时间戳、签名sign动态配置,自动登录成功后请求重发功能,3种层次的参数设置默认全局局部,默认标准ApiResult同时可以支持自定义的数据结构,已经能满足现在的大部分网络请求。
Java
3,128
star
2

EasySignSeekBar

本库主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性设置,支持设置section(节点)、mark(标记)、track(轨迹)、thumb(拖动块)、progress(进度)、sign(提示框)等功能
Java
723
star
3

EasyXRecyclerView

主要提供了简单易用强大的RecyclerView库,包括自定义刷新加载效果、极简通用的万能适配器Adapter、万能分割线、多种分组效果、常见状态页面、item动画效果、添加多个header和footer、侧滑、拖拽、Sticky(黏性)效果、多item布局等,各模块之间灵活、解耦、通用、又能相互组合使用。
Java
628
star
4

RxAudio

本库是一款基于Rxjava实现的android音频设备通信库,主要用于手机和音频设备之间通信,支持录音、发送、供电、发送失败自动重试(可以指定重试次数),设置接收超时、自定义编解码,自定义配置参数等功能,使用本库只需要关注与业务相关的自定义编解码。
Java
171
star