Android Ruler Picker
Android custom view that uses ruler for picking the number from given range.
Screenshots:
Sample 1 | Sample 2 |
---|---|
Features:
- Easy to integrate. All you have to do is add the view into your XML and listen for the value changes.
- Highly customizable. Change width, height, color, distance between indicators. Change the color and sze of the texts in the ruler in XML or dynamically from your java or kotlin code.
- Extremely lightweight ?.
How to use this library?
-
Gradle dependency:
- Add below dependency into your build.gradle file.
compile 'com.kevalpatel2106:ruler-picker:1.0'
- For other build systems see Import.md.
- Add below dependency into your build.gradle file.
-
Add
RulerValuePicker
inside your XML layout.
<com.kevalpatel2106.rulerpicker.RulerValuePicker
android:id="@+id/ruler_picker"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@android:color/holo_orange_dark"
app:indicator_color="@android:color/white"
app:indicator_interval="14dp"
app:indicator_width="2dp"
app:max_value="120"
app:min_value="35"
app:notch_color="@android:color/white"
app:ruler_text_size="6sp"/>
- Library provides XML attributes to customize the
RulerValuePicker
or you can customize it dynamically using Java/Kotlin code.
Attribute | Type | Java/Kotlin | Description |
---|---|---|---|
indicator_color | Color | setIndicatorColor() |
Change the color of the indicator in the ruler. |
indicator_interval | Dimensions | setIndicatorIntervalDistance() |
Change the distance between two indicators in the ruler. |
indicator_width | Dimensions | setIndicatorWidth() |
Change the width (thickness) of the indicator. |
notch_color | Color | setNotchColor() |
Change the color off the notch at the top of the ruler. |
ruler_text_size | Dimensions | setTextSize() |
Change the size of the text that displays the values in the ruler. |
ruler_text_color | Color | setTextColor() |
Change the color of the text that displays the values in the ruler. |
long_height_height_ratio | Fraction | setIndicatorHeight() |
Change the height of the long indicator. The value is between 0 to 1 where 1 indicates the height of the ruler. This value must be greater than or equal to long_height_height_ratio . |
short_height_height_ratio | Fraction | setIndicatorHeight() |
Change the height of the short indicator. The value is between 0 to 1 where 1 indicates the height of the ruler. This value must be less than or equal to short_height_height_ratio . |
max_value | Integer | setMinMaxValue() |
Maximum possible value to display in the ruler. This value must be greater than min_value . |
min_value | Integer | setMinMaxValue() |
Minimum possible value to display in the ruler. This value must be greater than max_value . |
- Set the initially selected value.
rulerValuePicker.selectValue(55 /* Initial value */);
- Set up a
RulerValuePickerListener
callback listener to get notify when the selected value changes. Application will receive the final selected value inonValueChange()
callback.
Java:
rulerValuePicker.setValuePickerListener(new RulerValuePickerListener() {
@Override
public void onValueChange(final int selectedValue) {
//Value changed and the user stopped scrolling the ruler.
//Application can consider this value as final selected value.
}
@Override
public void onIntermediateValueChange(final int selectedValue) {
//Value changed but the user is still scrolling the ruler.
//This value is not final value. Application can utilize this value to display the current selected value.
}
});
Kotlin:
rulerValuePicker.setValuePickerListener(object : RulerValuePickerListener {
override fun onValueChange(value: Int) {
//Value changed and the user stopped scrolling the ruler.
//You can consider this value as final selected value.
}
override fun onIntermediateValueChange(selectedValue: Int) {
//Value changed but the user is still scrolling the ruler.
//This value is not final value. You can utilize this value to display the current selected value.
}
})