Skip to content

Repository files navigation

RingTimeSelectView

A multi-selector for time between 0 and 60 minute 一个分钟时间段的选择器,可选择多个

操作演示

demoGif

主要功能

  • 在0~60之间,选择一个或多个时间段
  • 添加:点击圆环空白处添加时间段
  • 删除:起始点和终止点在同一时间点
  • 修改:滑动起始点或终止点,或使用点击快速截取功能
  • 合并:有相交的时间段,都将合并

其他效果

more

Gradle依赖

在工程build.gradle中添加

allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}

添加依赖

implementation 'com.github.zjun615:RingTimeSelectView:0.2'

使用

1. 布局

<com.zjun.widget.RingTimeSelectView
android:id="@+id/rtv_time"android:layout_width="match_parent"android:layout_height="300dp"android:background="#f1f1f1"app:rtv_startMinute="0"app:rtv_endMinute="60"app:rtv_degreeShortLength="0dp"app:rtv_degreeLongLength="10dp"app:rtv_degreeLongWidth="1px"
/>

2. 监听回调

rtv_time.setOnTimeChangeListener(newRingTimeSelectView.IOnTimeChangedListener() {
@OverridepublicvoidonChanged(RingTimeSelectViewview, List<RingTimeSelectView.TimePart> timePartList) {
Log.d(TAG, "onChanged: ");
}
@OverridepublicvoidonInsert(RingTimeSelectView.TimePartpart) {
Log.d(TAG, String.format("onInsert: %d ~ %d", part.getStart(), part.getEnd()));
}
@OverridepublicvoidonSelectStart(intminute) {
Log.d(TAG, "onSelectStart: " + minute);
}
@OverridepublicvoidonSelectChanged(intminute) {
Log.d(TAG, "onSelectChanged: " + minute);
}
@OverridepublicvoidonSelectFinished() {
Log.d(TAG, "onSelectFinished: ");
}
});

属性说明

属性名说明默认值
rtv_startMinute默认第一组的起始时间(∈[0, 60],与rtv_endMinute一起使用,可用于在布局中显示效果。-1代表无效值)-1
rtv_endMinute默认第一组的终止时间(∈[0, 60], 与rtv_startMinute一起使用,可用于在布局中显示效果。-1代表无效值)-1
rtv_gravity重力,代表对齐方式,与layout_gravity差不多。共有6种可组合使用的标记:top、bottom、center_vertical、left、right、center_horizontal、centertop|left
rtv_initialMinutes初始化时间间隔,创建新时间段时,时间段的间隔值5
rtv_ringWidth圆环的宽度30dp
rtv_ringBgColor圆环背景色#a7a7a7(淡灰色)
rtv_sectionSum可创建时间段的总个数3
rtv_quickCutEnable是否开启快速剪切功能。开启后,在已选时间段上点击,能快速修改终止时间为点击的时间点false
rtv_sectionColor已选时间段的颜色#148c75(深绿色)
rtv_sectionColor2已选时间的渐变色2。设置后,已选时间段将是渐变色,由rtv_sectionColor、rtv_sectionColor2一起组合-1
rtv_sectionColor3已选时间的渐变色3。设置后,已选时间段将是渐变色,由rtv_sectionColor、rtv_sectionColor2、rtv_sectionColor3一起组合-1
rtv_anchorDiameter锚点(时间段的两个端点)的直径50dp
rtv_anchorStrokeWidth锚点描边宽度6dp
rtv_anchorTextSize锚点字体大小16sp
rtv_anchorNeedMerge起始锚点为0,终止锚点为60时,是否需要合并true
rtv_anchorStartColor起始锚点的颜色#007ffe(淡蓝色)
rtv_anchorStartStrokeColor起始锚点的描边颜色#FFFFFF(白色)
rtv_anchorStartText起始锚点的文字ON
rtv_anchorStartTextColor起始锚点的文字颜色#FFFFFF(白色)
rtv_anchorEndColor终止锚点的颜色(同rtv_anchorStartColor)
rtv_anchorEndStrokeColor终止锚点的描边颜色(同rtv_anchorStartStrokeColor)
rtv_anchorEndText终止锚点的文字OFF
rtv_anchorEndTextColor终止锚点的文字颜色(同rtv_anchorStartTextColor)
rtv_degreeColor刻度颜色#888888(深灰色)
rtv_degreeLongLength长刻度(能被5整除的时间点)长度(圆环中心圆的1/16)
rtv_degreeLongWidth长刻度宽度2dp
rtv_degreeShortLength短刻度长度rtv_degreeLongLength的1/2
rtv_degreeShortWidth短刻度宽度(同rtv_degreeLongWidth)
rtv_numberSize刻度数值字体大小14sp
rtv_numberColor刻度数值颜色#888888

接口说明

/** * 获取当前的时间段集合值。这些时间段已经按起始时间,从小到大排好了序 * @return 时间段集合 */publicsynchronizedList<TimePart> getTimeSections()
/** * 设置时间段集合 * @param partList 时间段集合 */publicsynchronizedvoidsetTimeSections(List<TimePart> partList)
/** * 清除所有时间段 */publicsynchronizedvoidclearTimeSections()
/** * 设置时间变化的监听事件 */publicvoidsetOnTimeChangeListener(IOnTimeChangedListenerlistener)
/** * 时间变化监听接口 */publicinterfaceIOnTimeChangedListener {
/** * 当变化时,所有数据提交给回调 * @param view 本控件 * @param timePartList 所有时间段集合,已按时间从小到大排序 */voidonChanged(RingTimeSelectViewview, List<TimePart> timePartList);
/** * 当插入一条时间段时,回调 */voidonInsert(TimePartpart);
/** * 当开始选择时间时,回调 * @param minute 选中锚点的分钟 */voidonSelectStart(intminute);
/** * 锚点正在变化的分钟值 * @param minute 选中锚点的分钟 */voidonSelectChanged(intminute);
/** * 不再选中时,回调 */voidonSelectFinished();
}

About

No description, website, or topics provided.

Resources

Stars

17 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages