SimpleRangeView
SimpleRangeView is custom view component for Android, written in Kotlin, that provides for the selection of a range of discrete values designated by tick marks.
Gradle
dependencies {
compile ' me.bendik.simplerangeview:simplerangeview:0.2.0'
}
Basic usage
RangeView Builder
Attributes
Developers can customize the following attributes (both via XML and programmatically):
Range Attributes
name
format
description
default value
lineColor
color
Range bar color
#F7F7F7
activeLineColor
color
Active range bar color
#0C6CE1
fixedLineColor
color
Fixed range bar color
#E3E3E3
lineThickness
dimension
Range bar thickness
4
activeLineThickness
dimension
Active range bar thickness
6
fixedLineThickness
dimension
Fixed range bar thickness
6
innerRangePadding
dimension
Range inner padding
16
innerRangePaddingLeft
dimension
Range inner left padding
16
innerRangePaddingRight
dimension
Range inner right padding
16
movable
boolean
It allows to move the entire active range
false
showFixedLine
boolean
Show fixed range bar
false
count
integer
Count of ticks
10
start
integer
Start of active range
0
end
integer
End of active range
9
minDistance
integer
Minimal active range length
1
maxDistance
integer
Maximal active range length
0 ~ count
startFixed
integer
Start of fixed range
0
endFixed
integer
End of fixed range
0
Tick Attributes
name
format
description
default value
tickColor
color
Range bar tick color
#C5C5C5
activeTickColor
color
Active tick color
#FFFFFF
fixedTickColor
color
Fixed tick color
#C5C5C5
tickRadius
dimension
Tick radius
1
activeTickRadius
dimension
Active tick radius
1
fixedTickRadius
dimension
Fixed tick radius
1
showTicks
boolean
Show ticks
true
showActiveTicks
boolean
Show fixed ticks
true
showFixedTicks
boolean
Show active ticks
true
Label Attributes
name
format
description
default value
labelColor
color
Label color
#C5C5C5
activeLabelColor
color
Active label color
#0C6CE1
fixedLabelColor
color
Fixed label color
#0F7BFF
activeThumbLabelColor
color
Active thumb label color
#C5C5C5
fixedThumbLabelColor
color
Fixed thumb label color
#C5C5C5
labelFontSize
dimension
Label font size
12
labelMarginBottom
dimension
Label bottom margin
16
showLabels
boolean
Show labels
true
Thumb Attributes
name
format
description
default value
activeThumbColor
color
Active thumb color
#0F7BFF
activeFocusThumbColor
color
Focused thumb color
#0F7BFF
fixedThumbColor
color
Fixed thumb color
#E3E3E3
activeFocusThumbAlpha
float
Focused thumb alpha
1.0
activeThumbRadius
dimension
Active thumb radius
10
activeThumbFocusRadius
dimension
Focused thumb radius
14
fixedThumbRadius
dimension
Fixed thumb radius
10
Examples
Layout XML
This is a SimpleRangeView with a lower and upper value, count of ticks and fixed range
<me .bendik.simplerangeview.SimpleRangeView
xmlns : app =" http://schemas.android.com/apk/res-auto"
android : id =" @+id/fixed_rangeview"
android : layout_width =" match_parent"
android : layout_height =" wrap_content"
app : count =" 10"
app : start =" 3"
app : end =" 6"
app : showFixedLine =" true"
app : startFixed =" 2"
app : endFixed =" 7"
/>
This is a SimpleRangeView with movable active range and minimal length of active range
<me .bendik.simplerangeview.SimpleRangeView
xmlns : app =" http://schemas.android.com/apk/res-auto"
android : id =" @+id/fixed_rangeview"
android : layout_width =" match_parent"
android : layout_height =" wrap_content"
app : count =" 10"
app : start =" 3"
app : end =" 6"
app : movable =" true"
app : minDistance =" 2"
/>
Adding listeners
rangeView .setOnRangeLabelsListener (new SimpleRangeView .OnRangeLabelsListener () {
@ Nullable
@ Override
public String getLabelTextForPosition (@ NotNull SimpleRangeView rangeView , int pos , @ NotNull SimpleRangeView .State state ) {
return String .valueOf ("L" + (pos +1 ));
}
});
rangeView .setOnTrackRangeListener (new SimpleRangeView .OnTrackRangeListener () {
@ Override
public void onStartRangeChanged (@ NotNull SimpleRangeView rangeView , int start ) {
editStart .setText (String .valueOf (start ));
}
@ Override
public void onEndRangeChanged (@ NotNull SimpleRangeView rangeView , int end ) {
editEnd .setText (String .valueOf (end ));
}
});
rangeView .setOnChangeRangeListener (new SimpleRangeView .OnChangeRangeListener () {
@ Override
public void onRangeChanged (@ NotNull SimpleRangeView rangeView , int start , int end ) {
editRange .setText (String .valueOf (start ) + " - " + String .valueOf (end ));
}
});
Using Builder
final SimpleRangeView rangeView = new SimpleRangeView .Builder (this )
.count (10 )
.start (2 )
.end (7 )
.startFixed (1 )
.endFixed (8 )
.showFixedLine (true )
.movable (true )
.onChangeRangeListener (this )
.onTrackRangeListener (this )
.onRangeLabelsListener (this )
.build ();
Change Log
0.2 - Bugfixes, Refactoring & maxDistance attribute
0.1.1 - Bugfixes & Handle Instance State
0.1 - Initial release
TODO
License
Copyright (C) 2016 Vitaliy Bendik
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.