{"id":18735150,"url":"https://github.com/irontec/inkslider","last_synced_at":"2025-11-15T11:30:14.668Z","repository":{"id":66472550,"uuid":"204479055","full_name":"irontec/InkSlider","owner":"irontec","description":null,"archived":false,"fork":false,"pushed_at":"2021-09-09T10:34:48.000Z","size":375,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T04:53:53.267Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/irontec.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-26T13:13:58.000Z","updated_at":"2021-09-09T10:34:40.000Z","dependencies_parsed_at":"2023-02-22T12:30:47.862Z","dependency_job_id":null,"html_url":"https://github.com/irontec/InkSlider","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irontec%2FInkSlider","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irontec%2FInkSlider/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irontec%2FInkSlider/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irontec%2FInkSlider/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irontec","download_url":"https://codeload.github.com/irontec/InkSlider/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239607634,"owners_count":19667453,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T15:15:53.061Z","updated_at":"2025-11-15T11:30:14.338Z","avatar_url":"https://github.com/irontec.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InkSliderLibraryProject\n\n[![](https://jitpack.io/v/irontec/InkSlider.svg)](https://jitpack.io/#irontec/InkSlider)\n\nLibrary to make fancy selector sliders. Indicators can be shown on both sides, one or none. Values and colors are not linked, so you can have a lot more values than colors.\n\n# Parametrization\n\n## By code\n\n* *color*: Color resource id list.\n* *values*: Values (**Item** below) list to select.\n* *currentItem*: currently selected item.\n* *onValueSet*: listener when a values is **selected**. When the user releases the touch.\n* *onValueChange*: listener when a value is **displayed**. When the user moves the finger and the value changes.\n* *hardSteps*: Defines if the marker can stop in any place when user press released, or only on some hard points (the center of the realm associated with a value)\n* *enabled*: if view is enabled or disabled.\n* *displayMode*. Values: LEFT, RIGHT, BOTH.\n* *Item*\n  * *value*: **Any**. Put here what you want the user to be able to select.\n  * *display*: **Display** class (below)\n  * *selectable*: If this value is selectable. I use it to add some unselectable values on top or bottom if limits should not be selectable.\n* *Display*\n  * *string*: indicator text value (optional)\n  * *textColor*: indicator text color (optional)\n  * *arrowTintColor*: indicator arrow tint color (optional)\n  * *iconTintColor*: indicator icon tint color (optional)\n  * *icon*: indicator icon (optional)\n\n## By XML\n\n### Dimension\n\n```XML\n\u003cresources\u003e\n\t\u003c!-- DISPLAYS --\u003e\n\t\u003cdimen name=\"inkslider_display_horizontal_separation\"\u003e17dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_arrow_size\"\u003e18dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_text_size\"\u003e33sp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_side_display_icon_width\"\u003e60dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_side_display_icon_height\"\u003e60dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_negative_margin\"\u003e10dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_center_special_size\"\u003e20dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_center_special_size_selected\"\u003e50dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_display_center_special_stroke_width\"\u003e1.5dp\u003c/dimen\u003e\n\n\t\u003c!-- ROW --\u003e\n\t\u003cdimen name=\"inkslider_row_vertical_height_horizontal_width\"\u003e24dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_row_vertical_width_horizontal_height\"\u003e48dp\u003c/dimen\u003e\n\n\t\u003c!-- BUTTONS --\u003e\n\t\u003cdimen name=\"inkslider_button_width\"\u003e72dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_height\"\u003e72dp\u003c/dimen\u003e\n\n\t\u003c!-- TOP BUTTON CORNERS --\u003e\n\t\u003cdimen name=\"inkslider_button_top_corner_top_left\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_top_corner_top_right\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_top_corner_bottom_left\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_top_corner_bottom_right\"\u003e64dp\u003c/dimen\u003e\n\n\t\u003c!-- BOTTOM BUTTON CORNERS --\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_corner_top_left\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_corner_top_right\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_corner_bottom_left\"\u003e64dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_corner_bottom_right\"\u003e64dp\u003c/dimen\u003e\n\n\t\u003c!-- BUTTON MARGINS --\u003e\n\t\u003cdimen name=\"inkslider_button_top_margin_bottom\"\u003e16dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_margin_top_right\"\u003e16dp\u003c/dimen\u003e\n\t\u003cdimen name=\"inkslider_button_bottom_margin_bottom_left\"\u003e16dp\u003c/dimen\u003e\n\u003c/resources\u003e\n```\n\n### Colors\n\n```XML\n\u003cresources\u003e\n\t\u003ccolor name=\"inkslider_plus_minus_button_color\"\u003e@color/colorprimary\u003c/color\u003e\n\t\u003ccolor name=\"inkslider_plus_minus_button_color_ripple\"\u003e@color/colorprimaryripple\u003c/color\u003e\n\t\u003ccolor name=\"inkslider_plus_minus_button_icon_color\"\u003e#FFF\u003c/color\u003e\n\t\u003ccolor name=\"inkslider_indicator_arrow_color\"\u003e#FFF\u003c/color\u003e\n\u003c/resources\u003e\n```\n\n# Examples\n\nTemperature slider class:\n\n```kt\nimport android.content.Context\nimport android.util.AttributeSet\nimport com.inlacou.inkslider.BaseInkSlider\nimport com.inlacou.inkslider.InkSliderMdl\nimport com.inlacou.inksliderlibraryproject.R\n\nclass BasicTemperatureSlider @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)\n\t: InkSlider(context, attrs, defStyleAttr){\n\t\n\tvar onValueSet: ((InkSliderMdl.Item, fromUser: Boolean) -\u003e Unit)? = null\n\tvar onValueChange: ((InkSliderMdl.Item, fromUser: Boolean) -\u003e Unit)? = null\n\tval colors = context.resources?.getIntArray(R.array.temperature_slider)?.toList() ?: listOf()\n\tval temperatures: List\u003cInkSliderMdl.Item\u003e\n\t\n\tinit {\n\t\ttemperatures = (170 .. 270)\n\t\t\t\t.filter { it.toString().last()=='0' || it.toString().last()=='5' }\n\t\t\t\t.map { it.toDouble() }.reversed()\n\t\t\t\t.mapIndexed { index, it -\u003e InkSliderMdl.Item(value = it / 10, display = InkSliderMdl.Display(\"${it / 10}º\", textColor = colors[(index + 1) / 2])) }\n\t\t\t\t.toMutableList()\n\t\ttemperatures.add(0, InkSliderMdl.Item(value = 27, display = InkSliderMdl.Display(string = \"27.0º\", textColor = colors[0]), selectable = false))\n\t\tmodel = InkSliderMdl(\n\t\t\t\tcolors = colors\n\t\t\t\t, values = temperatures\n\t\t\t\t, onValueSet = { item: InkSliderMdl.Item, b: Boolean -\u003e\n\t\t\tonValueSet?.invoke(item, b)\n\t\t}, onValueChange = { item: InkSliderMdl.Item, b: Boolean -\u003e\n\t\t\tonValueChange?.invoke(item, b)\n\t\t})\n\t}\n}\n```\n\nSound slider class:\n\n```kt\nimport android.content.Context\nimport android.util.AttributeSet\nimport com.inlacou.inkslider.BaseInkSlider\nimport com.inlacou.inkslider.InkSliderMdl\nimport com.inlacou.inksliderlibraryproject.R\n\nclass BasicSoundSlider @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)\n\t: InkSlider(context, attrs, defStyleAttr) {\n\t\n\tvar onValueSet: ((InkSliderMdl.Item, fromUser: Boolean) -\u003e Unit)? = null\n\tvar onValueChange: ((InkSliderMdl.Item, fromUser: Boolean) -\u003e Unit)? = null\n\tval colors = context.resources?.getIntArray(R.array.sound_slider)?.toList() ?: listOf()\n\tvar icons: List\u003cInkSliderMdl.Item\u003e = listOf()\n\t\n\tinit {\n\t\tcontext.resources?.obtainTypedArray(R.array.sounds)?.let { array -\u003e\n\t\t\ticons = (0 until array.length())\n\t\t\t\t\t.reversed()\n\t\t\t\t\t.mapIndexed { index, it -\u003e\n\t\t\t\t\t\tInkSliderMdl.Item(value = it, selectable = index != 0, display = InkSliderMdl.Display(icon = array.getResourceId(index, -1)))\n\t\t\t\t\t}\n\t\t\tmodel = InkSliderMdl(\n\t\t\t\t\tcolors = colors\n\t\t\t\t\t, values = icons\n\t\t\t\t\t, onValueSet = { item: InkSliderMdl.Item, b: Boolean -\u003e\n\t\t\t\tonValueSet?.invoke(item, b)\n\t\t\t}, onValueChange = { item: InkSliderMdl.Item, b: Boolean -\u003e\n\t\t\t\tonValueChange?.invoke(item, b)\n\t\t\t})\n\t\t\tarray.recycle()\n\t\t}\n\t}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firontec%2Finkslider","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firontec%2Finkslider","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firontec%2Finkslider/lists"}