/CirclesSeekBar

Highly customized vertical Seekbar with segments.

Primary LanguageKotlinApache License 2.0Apache-2.0

CirclesSeekBar

It is an Android Seekbar developed in Kotlin

Setup

Add the Maven Central repository to your project's root build.gradle file

allprojects {
    repositories {
        mavenCentral()
    }
}

Add the dependency in your app build.gradle file:

implementation 'com.github.Greenev:CirclesSeekBar:0.0.1'

Usage

Use the view in your layout.xml by declaring:

	<com.ss.svs.SegmentedVerticalSeekBar
            android:id="@+id/svsLevelView"
            android:layout_width="150dp"
            android:layout_height="200dp"
            android:layout_gravity="center"
            android:layout_marginTop="100dp"
            app:backgroundColor="@color/color_background"
            app:clockwise="true"
            app:cornerRadius="10dp"
            app:currentValue="2"
            app:delimiterColor="@color/white"
            app:isAllRadius="true"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:maxValue="5"
            app:progressColor="@color/color_progress"
            app:pyramidViewEnable="true"
            app:step="1"
            app:touchDisabled="false" />

Use setOnBoxedPointsChangeListener in your activity/fragment to get current progress of seekbar:

svsLevelView.setOnBoxedPointsChangeListener(object :
            com.ss.svs.SegmentedVerticalSeekBar.OnValuesChangeListener {
            override fun onProgressChanged(segmentedPointsSeekBar: com.ss.svs.SegmentedVerticalSeekBar?, progress: Int) {
                activityMainBinding.tvCurrentValue.text = progress.toString()
            }
 
            override fun onStartTrackingTouch(segmentedPointsSeekBar: com.ss.svs.SegmentedVerticalSeekBar?) {
                Log.e("MainAct","onStartTrackingTouch: "+segmentedPointsSeekBar?.value)
 
            }
 
            override fun onStopTrackingTouch(segmentedPointsSeekBar: com.ss.svs.SegmentedVerticalSeekBar?) {
                Log.e("MainAct","onStopTrackingTouch: "+segmentedPointsSeekBar?.value)
                activityMainBinding.svsLevelView.value = segmentedPointsSeekBar?.value!!
            }
 
        })

Attributes

Following are the various attributes available to customize the look and feel of the Seekbar.

currentValue: Current value of the Progress in Seekbar. It can be used to set the default current progress in the seekbar and using this attributes getter, the updated progress value can be captured

step: Incremental value for progress on user’s drag. For example, if set to “2” it will increase 2 steps of progress in the Seekbar.

delimiterColor: Color of the separator dividing the Seekbar into segments.

progressColor: Color of the progress in Seekbar.

backgroundColor: Color of the base view of Seekbar.

pyramidViewEnable: Boolean value if set to true will create Seekbar in the shape of the pyramid. Setting it to false will create a rectangular Seekbar which is the default case.

clockwise: Boolean applicable if pyramid view is enabled. Setting it to true will create a pyramid seekbar from top to bottom while setting it to false will create it from bottom to top.

isAllRadius: Boolean value to set the radius for all segments of the Seekbar, that is rounded views for all segments.

touchDisabled: Boolean value to allow the progress of Seekbar only using scroll motion and not the touch/press event.

enabled: Boolean to enable/disable the Seekbar view completely.

License

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.