ColorWheel is a library for Android which contains helpful views which can be used to pick an ARGB color.
From version 1.1.13 the library will be hosted on Maven Central Repository because JCenter
announced its deprecation in the future. This migration lead to change of the group id
which is now com.github.antonpopoff.
The minimal required Android version is 16 (Android 4.1).
// For version 1.1.13 and above
implementation 'com.github.antonpopoff:colorwheel:1.1.13'
// For version 1.1.12 and below
implementation 'com.apandroid:colorwheel:1.1.12'In case of any problems make sure that jCenter or Maven Central repositories are specified
in your build.gradle file:
repositories {
mavenCentral() // Since version 1.1.13.
jcenter() // For version 1.1.12 and below.
}For version 1.1.13 and above:
<com.github.antonpopoff.ColorWheel
android:id="@+id/colorWheel"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.github.antonpopoff.gradientseekbar.GradientSeekBar
android:id="@+id/gradientSeekBar"
android:layout_width="match_parent"
android:layout_height="match_parent" />For version 1.1.12 and below:
<com.apandroid.colorwheel.ColorWheel
android:id="@+id/colorWheel"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.apandroid.colorwheel.gradientseekbar.GradientSeekBar
android:id="@+id/gradientSeekBar"
android:layout_width="match_parent"
android:layout_height="match_parent" />To set/get a RGB color you can use ColorWheel.rgb property:
val colorWheel = findViewById<ColorWheel>(R.id.colorWheel)
val previousColor = colorWheel.rgb
colorWheel.rgb = Color.rgb(13, 37, 42)You can set a listener via ColorWheel.colorChangeListener property:
colorWheel.colorChangeListener = { rgb: Int -> /* Code */ }Important note: keep in mind that ColorWheel is a two-dimensional implementation of HSV color
model. Two-dimensional in that case means that its brightness (value) component of HSV is always
set to 1. Because of that, ColorWheel can't display every single color supported by HSV.
Therefore if you set a color which can't be displayed it will be transformed to the
closest HSV color which can be displayed by ColorWheel. In order to pick colors
which can't be displayed by ColorWheel you can additionally use GradientSeekBar.
GradientSeekBar view draws a vertical or horizontal bar filled with a linear gradient
of two colors. You can use the view to pick an intermediate color in-between.
To pick an intermediate ARGB color you can use GradientSeekBar.argb property:
val color = gradientSeekBar.argbTo set/get start/end colors you can use the following properties and methods:
val startColor = Color.argb(0, 0, 0, 0)
val endColor = Color.argb(0xff, 0xff, 0xff, 0xff)
gradientSeekBar.startColor = startColor
gradientSeekBar.endColor = endColor
gradientSeekBar.setColors(startColor, endColor)If you want to change an intermediate color programmatically you can use GradientSeekBar.offset
property. Its value lies within the range from 0f to 1f and reflects how close
the intermediate color to startColor or endColor properties.
You can set a listener via GradientSeekBar.colorChangeListener property:
gradientSeekBar.colorChangeListener = { offset: Float, argb: Int -> /* Code */ }It's impossible to pick all different colors from ColorWheel because it's only two-dimensional
and the brightness (value) component of HSV is always set to 1.
To compensate that you can use GradientSeekBar and its setBlackToColor(color) extension.
This method sets black color as startColor and supplied color as endColor. This gives you a
possibility to pick additional shades of a color picked from ColorWheel.
If you want to use GradientSeekBar to pick the alpha value of a color in range from 0 to 255
you can use the following extension:
GradientSeekBar.setTransparentToColor(color: Int, respectAlpha: Boolean = true)
This method takes an ARGB color and sets the transparent version of it as startColor and
an opaque version as endColor. respectAlpha parameter determines whether or not the thumb's
position will be adjusted based on the alpha value of the color you supplied.
To get the alpha value of the current color you can use GradientSeekBar.currentColorAlpha
extension property.
You can use GradientSeekBar.setAlphaChangeListener extenstion to set a listener that has additional
alpha parameter which lies withing the range from 0 to 255.
gradientSeekBar.setAlphaChangeListener { offset: Float, color: Int, alpha: Int -> /* Code */ }You can use the following XML attributes to additionally customize ColorWheel and GradientSeekBar.
| XML Attribute | Property | Description |
|---|---|---|
tb_thumbRadius |
thumbRadius |
Sets ColorWheel's thumb radius |
tb_thumbColor |
thumbColor |
Sets ColorWheel's thumb color |
tb_thumbStrokeColor |
thumbStrokeColor |
Sets ColorWheel's thumb stroke color |
tb_thumbColorCirlceScale |
thumbColorCircleScale |
Sets ColorWheel's thumb color circle size which is relative to thumbRadius. This value is in range from 0 to 1. If it set to 1 it will have the same size as thumbRadius |
For version 1.1.13 and above:
| XML Attribute | Property | Description |
|---|---|---|
tb_thumbRadius |
thumbRadius |
Sets GradientSeekBar's thumb radius |
tb_thumbColor |
thumbColor |
Sets GradientSeekBar's thumb color |
tb_thumbStrokeColor |
thumbStrokeColor |
Sets GradientSeekBar's thumb stroke color |
tb_thumbColorCirlceScale |
thumbColorCircleScale |
Sets GradientSeekBar's thumb color circle size which is relative to thumbRadius. This value is in range from 0 to 1. If it set to 1 it will have the same size as thumbRadius |
gsb_barSize |
barSize |
Sets width(vertical)/height(horizontal) of GradientSeekBar's gradient bar depending on it's orientation |
gsb_barCornersRadius |
cornerRadius |
Sets GradientSeekBar's gradient bar corners radius |
gsb_startColor |
startColor |
Sets GradientSeekBar's startColor |
gsb_endColor |
endColor |
Sets GradientSeekBar's endColor |
gsb_offset |
offset |
Sets GradientSeekBar's offset |
gsb_orientation |
orientation |
Sets GradientSeekBar's orientation. Possible values: vertical/horizontal |
For version 1.1.12 and below:
| XML Attribute | Property | Description |
|---|---|---|
tb_thumbRadius |
thumbRadius |
Sets GradientSeekBar's thumb radius |
tb_thumbColor |
thumbColor |
Sets GradientSeekBar's thumb color |
tb_thumbStrokeColor |
thumbStrokeColor |
Sets GradientSeekBar's thumb stroke color |
tb_thumbColorCirlceScale |
thumbColorCircleScale |
Sets GradientSeekBar's thumb color circle size which is relative to thumbRadius. This value is in range from 0 to 1. If it set to 1 it will have the same size as thumbRadius |
asb_barSize |
barSize |
Sets width(vertical)/height(horizontal) of GradientSeekBar's gradient bar depending on it's orientation |
asb_barCornersRadius |
cornerRadius |
Sets GradientSeekBar's gradient bar corners radius |
asb_startColor |
startColor |
Sets GradientSeekBar's startColor |
asb_endColor |
endColor |
Sets GradientSeekBar's endColor |
asb_offset |
offset |
Sets GradientSeekBar's offset |
asb_orientation |
orientation |
Sets GradientSeekBar's orientation. Possible values: vertical/horizontal |
MIT