├── .buildscript
└── deploy_snapshot.sh
├── .gitignore
├── .travis.yml
├── CHLOG.md
├── LICENSE
├── README.md
├── art
├── multislider.gif
└── multislider.mp4
├── build.gradle
├── captures
└── io.apptik.widget.example.multislider_2016.11.23_10.14.li
├── docs
├── _config.yml
├── css
│ └── main.scss
├── index.html
└── javadoc
│ └── 1.3
│ ├── multislider-espresso
│ ├── allclasses-frame.html
│ ├── allclasses-noframe.html
│ ├── constant-values.html
│ ├── deprecated-list.html
│ ├── help-doc.html
│ ├── index-all.html
│ ├── index.html
│ ├── io
│ │ └── apptik
│ │ │ └── widget
│ │ │ ├── MultiSliderActions.html
│ │ │ ├── SetThumbValueAction.html
│ │ │ ├── package-frame.html
│ │ │ ├── package-summary.html
│ │ │ └── package-tree.html
│ ├── overview-tree.html
│ ├── package-list
│ ├── script.js
│ └── stylesheet.css
│ ├── multislider-uiautomator
│ ├── allclasses-frame.html
│ ├── allclasses-noframe.html
│ ├── constant-values.html
│ ├── deprecated-list.html
│ ├── help-doc.html
│ ├── index-all.html
│ ├── index.html
│ ├── io
│ │ └── apptik
│ │ │ └── widget
│ │ │ ├── UiMultiSlider.html
│ │ │ ├── package-frame.html
│ │ │ ├── package-summary.html
│ │ │ └── package-tree.html
│ ├── overview-tree.html
│ ├── package-list
│ ├── script.js
│ └── stylesheet.css
│ └── multislider
│ ├── allclasses-frame.html
│ ├── allclasses-noframe.html
│ ├── constant-values.html
│ ├── deprecated-list.html
│ ├── help-doc.html
│ ├── index-all.html
│ ├── index.html
│ ├── io
│ └── apptik
│ │ └── widget
│ │ ├── MultiSlider.OnThumbValueChangeListener.html
│ │ ├── MultiSlider.OnTrackingChangeListener.html
│ │ ├── MultiSlider.SimpleChangeListener.html
│ │ ├── MultiSlider.Thumb.html
│ │ ├── MultiSlider.html
│ │ ├── Util.html
│ │ ├── package-frame.html
│ │ ├── package-summary.html
│ │ └── package-tree.html
│ ├── overview-tree.html
│ ├── package-list
│ ├── script.js
│ └── stylesheet.css
├── example
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ ├── AndroidManifest.xml
│ └── java
│ │ └── io
│ │ └── apptik
│ │ └── widget
│ │ └── example
│ │ └── multislider
│ │ └── ExampleTest.java
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── io
│ │ └── apptik
│ │ └── widget
│ │ └── example
│ │ └── multislider
│ │ ├── MultiSliderFragmentMany.java
│ │ ├── MultiSliderFragmentRange.java
│ │ ├── MultiSliderFragmentSingle.java
│ │ ├── MyActivity.java
│ │ └── NavigationDrawerFragment.java
│ └── res
│ ├── drawable-hdpi
│ ├── drawer_shadow.9.png
│ ├── example_scrubber_control_disabled_holo.png
│ ├── example_scrubber_control_focused_holo.png
│ ├── example_scrubber_control_normal_holo.png
│ ├── example_scrubber_control_pressed_holo.png
│ ├── example_scrubber_primary_holo.9.png
│ ├── example_scrubber_secondary_holo.9.png
│ ├── example_scrubber_track_holo_light.9.png
│ ├── ic_drawer.png
│ └── ic_launcher.png
│ ├── drawable-mdpi
│ ├── drawer_shadow.9.png
│ ├── example_scrubber_control_disabled_holo.png
│ ├── example_scrubber_control_focused_holo.png
│ ├── example_scrubber_control_normal_holo.png
│ ├── example_scrubber_control_pressed_holo.png
│ ├── example_scrubber_primary_holo.9.png
│ ├── example_scrubber_secondary_holo.9.png
│ ├── example_scrubber_track_holo_light.9.png
│ ├── ic_drawer.png
│ └── ic_launcher.png
│ ├── drawable-xhdpi
│ ├── drawer_shadow.9.png
│ ├── example_scrubber_control_disabled_holo.png
│ ├── example_scrubber_control_focused_holo.png
│ ├── example_scrubber_control_normal_holo.png
│ ├── example_scrubber_control_pressed_holo.png
│ ├── example_scrubber_primary_holo.9.png
│ ├── example_scrubber_secondary_holo.9.png
│ ├── example_scrubber_track_holo_light.9.png
│ ├── ic_drawer.png
│ └── ic_launcher.png
│ ├── drawable-xxhdpi
│ ├── drawer_shadow.9.png
│ ├── example_scrubber_control_disabled_holo.png
│ ├── example_scrubber_control_focused_holo.png
│ ├── example_scrubber_control_normal_holo.png
│ ├── example_scrubber_control_pressed_holo.png
│ ├── example_scrubber_primary_holo.9.png
│ ├── example_scrubber_secondary_holo.9.png
│ ├── example_scrubber_track_holo_light.9.png
│ ├── ic_drawer.png
│ └── ic_launcher.png
│ ├── drawable
│ ├── example_bar_shape.xml
│ ├── example_scrubber_control_selector_holo_light.xml
│ ├── example_scrubber_custom.9.png
│ └── example_scrubber_progress_horizontal_holo_light.xml
│ ├── layout
│ ├── activity_my.xml
│ ├── fragment_multi_slider_many.xml
│ ├── fragment_multi_slider_range.xml
│ ├── fragment_multi_slider_single.xml
│ ├── fragment_my.xml
│ └── fragment_navigation_drawer.xml
│ ├── values-v21
│ └── styles.xml
│ ├── values-w820dp
│ └── dimens.xml
│ └── values
│ ├── colors.xml
│ ├── dimens.xml
│ ├── strings.xml
│ └── styles.xml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── holo-style
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── res
│ ├── drawable-hdpi
│ ├── multislider_scrubber_control_disabled_holo.png
│ ├── multislider_scrubber_control_focused_holo.png
│ ├── multislider_scrubber_control_normal_holo.png
│ ├── multislider_scrubber_control_pressed_holo.png
│ ├── multislider_scrubber_primary_holo.9.png
│ ├── multislider_scrubber_secondary_holo.9.png
│ ├── multislider_scrubber_track_holo_light.9.png
│ ├── seek_thumb_normal.png
│ └── seek_thumb_pressed.png
│ ├── drawable-mdpi
│ ├── multislider_scrubber_control_disabled_holo.png
│ ├── multislider_scrubber_control_focused_holo.png
│ ├── multislider_scrubber_control_normal_holo.png
│ ├── multislider_scrubber_control_pressed_holo.png
│ ├── multislider_scrubber_primary_holo.9.png
│ ├── multislider_scrubber_secondary_holo.9.png
│ ├── multislider_scrubber_track_holo_light.9.png
│ ├── seek_thumb_normal.png
│ └── seek_thumb_pressed.png
│ ├── drawable-xhdpi
│ ├── multislider_scrubber_control_disabled_holo.png
│ ├── multislider_scrubber_control_focused_holo.png
│ ├── multislider_scrubber_control_normal_holo.png
│ ├── multislider_scrubber_control_pressed_holo.png
│ ├── multislider_scrubber_primary_holo.9.png
│ ├── multislider_scrubber_secondary_holo.9.png
│ ├── multislider_scrubber_track_holo_light.9.png
│ ├── seek_thumb_normal.png
│ └── seek_thumb_pressed.png
│ ├── drawable-xxhdpi
│ ├── multislider_scrubber_control_disabled_holo.png
│ ├── multislider_scrubber_control_focused_holo.png
│ ├── multislider_scrubber_control_normal_holo.png
│ ├── multislider_scrubber_control_pressed_holo.png
│ ├── multislider_scrubber_primary_holo.9.png
│ ├── multislider_scrubber_secondary_holo.9.png
│ └── multislider_scrubber_track_holo_light.9.png
│ ├── drawable
│ └── multislider_scrubber_control_selector_holo_light.xml
│ ├── values-v21
│ └── styles.xml
│ └── values
│ └── styles.xml
├── lib
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── io
│ │ └── apptik
│ │ └── widget
│ │ ├── MultiSlider.java
│ │ └── Util.java
│ └── res
│ ├── anim-v21
│ ├── multislider_thumb_pressed_to_unpressed_thumb_animation.xml
│ └── multislider_thumb_unpressed_to_pressed_thumb_0_animation.xml
│ ├── color-v21
│ └── control_highlight_material.xml
│ ├── color
│ └── control_highlight_material.xml
│ ├── drawable-hdpi
│ ├── multislider_control_off_mtrl_alpha.png
│ ├── multislider_control_to_pressed_mtrl_000.png
│ ├── multislider_control_to_pressed_mtrl_005.png
│ ├── multislider_primary_mtrl_alpha.9.png
│ ├── multislider_track_mtrl_alpha.9.png
│ ├── scrubber_control_on_mtrl_alpha.png
│ └── scrubber_control_on_pressed_mtrl_alpha.png
│ ├── drawable-mdpi
│ ├── multislider_control_off_mtrl_alpha.png
│ ├── multislider_control_to_pressed_mtrl_000.png
│ ├── multislider_control_to_pressed_mtrl_005.png
│ ├── multislider_primary_mtrl_alpha.9.png
│ └── multislider_track_mtrl_alpha.9.png
│ ├── drawable-v21
│ ├── control_background_multi_material.xml
│ ├── multislider_range_material.xml
│ ├── multislider_thumb_material_anim.xml
│ ├── multislider_thumb_pressed_to_unpressed.xml
│ ├── multislider_thumb_pressed_to_unpressed_animation.xml
│ ├── multislider_thumb_unpressed_to_pressed.xml
│ ├── multislider_thumb_unpressed_to_pressed_animation.xml
│ └── multislider_track_material.xml
│ ├── drawable-v23
│ ├── multislider_range_material.xml
│ └── multislider_track_material.xml
│ ├── drawable-xhdpi
│ ├── multislider_control_off_mtrl_alpha.png
│ ├── multislider_control_to_pressed_mtrl_000.png
│ ├── multislider_control_to_pressed_mtrl_005.png
│ ├── multislider_primary_mtrl_alpha.9.png
│ └── multislider_track_mtrl_alpha.9.png
│ ├── drawable-xxhdpi
│ ├── multislider_control_off_mtrl_alpha.png
│ ├── multislider_control_to_pressed_mtrl_000.png
│ ├── multislider_control_to_pressed_mtrl_005.png
│ ├── multislider_primary_mtrl_alpha.9.png
│ └── multislider_track_mtrl_alpha.9.png
│ ├── drawable-xxxhdpi
│ ├── multislider_control_to_pressed_mtrl_000.png
│ └── multislider_control_to_pressed_mtrl_005.png
│ ├── drawable
│ ├── multislider_range_material.xml
│ ├── multislider_thumb_material.xml
│ ├── multislider_tick_mark_material.xml
│ └── multislider_track_material.xml
│ └── values
│ ├── attrs.xml
│ ├── colors.xml
│ └── dimens.xml
├── mslider-espresso
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── io
│ └── apptik
│ └── widget
│ ├── MultiSliderActions.java
│ └── SetThumbValueAction.java
├── mslider-uiautomator
├── .gitignore
├── build.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── io
│ └── apptik
│ └── widget
│ └── UiMultiSlider.java
├── scrshot1.png
├── scrshot2.png
├── scrshot3.png
└── settings.gradle
/.buildscript/deploy_snapshot.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #
3 | # Deploy a jar, source jar, and javadoc jar to Sonatype's snapshot repo.
4 | #
5 | # Adapted from https://coderwall.com/p/9b_lfq and
6 | # http://benlimmer.com/2013/12/26/automatically-publish-javadoc-to-gh-pages-with-travis-ci/
7 |
8 | SLUG="apptik/MultiSlider"
9 | JDK="oraclejdk8"
10 | BRANCH="master"
11 |
12 | set -e
13 |
14 | if [ "$TRAVIS_REPO_SLUG" != "$SLUG" ]; then
15 | echo "Skipping snapshot deployment: wrong repository. Expected '$SLUG' but was '$TRAVIS_REPO_SLUG'."
16 | elif [ "$TRAVIS_JDK_VERSION" != "$JDK" ]; then
17 | echo "Skipping snapshot deployment: wrong JDK. Expected '$JDK' but was '$TRAVIS_JDK_VERSION'."
18 | elif [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
19 | echo "Skipping snapshot deployment: was pull request."
20 | elif [ "$TRAVIS_BRANCH" != "$BRANCH" ]; then
21 | echo "Skipping snapshot deployment: wrong branch. Expected '$BRANCH' but was '$TRAVIS_BRANCH'."
22 | else
23 | echo "Deploying snapshot..."
24 | ./gradlew uploadArchives
25 | echo "Snapshot deployed!"
26 | fi
27 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea
4 | .DS_Store
5 | /build
6 | *.iml
7 |
8 | *.class
9 |
10 | # Mobile Tools for Java (J2ME)
11 | .mtj.tmp/
12 |
13 | # Package Files #
14 | *.jar
15 | *.war
16 | *.ear
17 |
18 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
19 | hs_err_pid*
20 |
21 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: android
2 |
3 | jdk:
4 | - oraclejdk8
5 |
6 | android:
7 | components:
8 | - tools
9 | - build-tools-29.0.2
10 | - android-29
11 | - extra-android-m2repository
12 | - sys-img-armeabi-v7a-android-23
13 |
14 | script:
15 | - ./gradlew clean ":$MODULE:build"
16 |
17 | after_success:
18 | - .buildscript/deploy_snapshot.sh
19 |
20 | env:
21 | matrix:
22 | - MODULE=lib
23 | - MODULE=mslider-espresso
24 | - MODULE=mslider-uiautomator
25 | - MODULE=holo-style
26 |
27 | notifications:
28 | email: true
29 |
30 | before_install:
31 | - chmod +x gradlew
32 | - yes | sdkmanager "platforms;android-29"
33 |
34 | sudo: false
35 |
36 | cache:
37 | directories:
38 | - $HOME/.gradle
39 |
--------------------------------------------------------------------------------
/CHLOG.md:
--------------------------------------------------------------------------------
1 | Change Log
2 | ==========
3 |
4 |
5 | NEXT Version 1.3.1 *(FUTURE-2017)*
6 | ----------------------------------
7 |
8 |
9 | NEXT Version 1.3 *(14-12-2016)*
10 | ----------------------------------
11 |
12 | * New: Add new method setThumbNumber() #24
13 | * Fix: For RTL languages/layouts track does not mirror #35
14 | * New: add "add/removeThumb" method #25
15 | * New: add thumb enabled property #30
16 | * New: support for material design #11
17 | * New: enable Accessibility support #13
18 | * New: Add Callbacks when start stop traking
19 | * Fix: when in scrollcontainer #27
20 |
21 | Version 1.2 *(30-09-2015)*
22 | ----------------------------------
23 |
24 | * New: Add Slider tinting (colors customization)
--------------------------------------------------------------------------------
/art/multislider.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/art/multislider.gif
--------------------------------------------------------------------------------
/art/multislider.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/art/multislider.mp4
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 | mavenCentral()
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:3.5.0'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | group = GROUP
19 | version = VERSION_NAME
20 | repositories {
21 | google()
22 | jcenter()
23 | mavenCentral()
24 | }
25 | }
26 |
27 | ext {
28 | minSdkVersion = 14
29 | compileSdkVersion = 29
30 | buildToolsVersion = '29.0.2'
31 |
32 | supportAnnotations = "androidx.annotation:annotation:1.1.0"
33 | supportAppCompat = "androidx.appcompat:appcompat:1.1.0"
34 | supportCardView = "androidx.cardview:cardview:1.0.0"
35 | supportCompat = "androidx.core:core:1.2.0-alpha04"
36 | supportDesign = "com.google.android.material:material:1.1.0-alpha10"
37 | supportRecyclerView = "androidx.recyclerview:recyclerview:1.1.0-beta04"
38 |
39 | supportTestRunner = "androidx.test:runner:1.3.0-alpha02"
40 | supportTestRules = "androidx.test:rules:1.3.0-alpha02"
41 | supportTestEspresso = "androidx.test.espresso:espresso-core:3.3.0-alpha02"
42 | supportTestEspressoContrib = "androidx.test.espresso:espresso-contrib:3.3.0-alpha02"
43 | supportTestUiautomator = "androidx.test.uiautomator:uiautomator:2.2.0"
44 |
45 | junit = "androidx.test.ext:junit:1.1.2-alpha02"
46 |
47 | assertjCore1 = 'org.assertj:assertj-core:1.7.1'
48 | assertjCore2 = 'org.assertj:assertj-core:2.9.1'
49 | assertjCore3 = 'org.assertj:assertj-core:3.12.2'
50 | mockitoCore = 'org.mockito:mockito-core:2.25.1'
51 | }
52 |
--------------------------------------------------------------------------------
/captures/io.apptik.widget.example.multislider_2016.11.23_10.14.li:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/captures/io.apptik.widget.example.multislider_2016.11.23_10.14.li
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 |
2 | title: MultiSlider
3 | email: a@apptik.io
4 | description: > # this means to ignore newlines until "baseurl:"
5 | MultiSlider is multifunctional and multi-thumb custom view component for Android.
6 | It Can be used as a normal Android seekbar, a range bar and multi-thumb bar.
7 | MultiSlider is extremely easy to use while still very flexible and customizable.
8 | baseurl: "/MultiSlider"
9 | url: "http://apptik.io"
10 | twitter_username: apptikProj
11 | github_username: apptik
12 |
13 | # Build settings
14 | markdown: kramdown
15 | theme: minima
16 |
--------------------------------------------------------------------------------
/docs/css/main.scss:
--------------------------------------------------------------------------------
1 | ---
2 | # Only the main Sass file needs front matter (the dashes are enough)
3 | ---
4 | @charset "utf-8";
5 |
6 | // Our variables
7 | $base-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
8 | $base-font-size: 16px;
9 | $base-font-weight: 400;
10 | $small-font-size: $base-font-size * 0.875;
11 | $base-line-height: 1.5;
12 |
13 | $spacing-unit: 30px;
14 |
15 | $text-color: #111;
16 | $background-color: #fdfdfd;
17 | $brand-color: #2a7ae2;
18 |
19 | $grey-color: #828282;
20 | $grey-color-light: lighten($grey-color, 40%);
21 | $grey-color-dark: darken($grey-color, 25%);
22 |
23 | // Width of the content area
24 | $content-width: 800px;
25 |
26 | $on-palm: 600px;
27 | $on-laptop: 800px;
28 |
29 | // Minima also includes a mixin for defining media queries.
30 | // Use media queries like this:
31 | // @include media-query($on-palm) {
32 | // .wrapper {
33 | // padding-right: $spacing-unit / 2;
34 | // padding-left: $spacing-unit / 2;
35 | // }
36 | // }
37 |
38 | // Import partials from the `minima` theme.
39 | @import "minima";
40 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: default
3 | ---
4 |
5 |
6 |
7 |
JavaDocs
8 |
9 | {% for file in site.static_files %}
10 | {% if file.extname == ".html" and file.path contains 'index.html' and file.path contains '/javadoc/' %}
11 |
17 | {% endif %}
18 | {% endfor %}
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/allclasses-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/allclasses-noframe.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/constant-values.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Constant Field Values (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/deprecated-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Deprecated List (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | mslider-espresso 1.3 API
7 |
60 |
61 |
72 |
73 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/io/apptik/widget/package-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
13 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/io/apptik/widget/package-summary.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
43 |
44 | - Prev Package
45 | - Next Package
46 |
47 |
51 |
54 |
55 |
65 |
66 |
67 |
68 |
69 |
70 |
73 |
96 |
97 |
113 |
114 |
115 | - Prev Package
116 | - Next Package
117 |
118 |
122 |
125 |
126 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/io/apptik/widget/package-tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget Class Hierarchy (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
73 |
74 |
Class Hierarchy
75 |
76 | - java.lang.Object
77 |
81 |
82 |
83 |
84 |
85 |
101 |
102 |
103 | - Prev
104 | - Next
105 |
106 |
110 |
113 |
114 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/overview-tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Class Hierarchy (mslider-espresso 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
77 |
78 |
Class Hierarchy
79 |
80 | - java.lang.Object
81 |
85 |
86 |
87 |
88 |
89 |
105 |
106 |
107 | - Prev
108 | - Next
109 |
110 |
114 |
117 |
118 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/package-list:
--------------------------------------------------------------------------------
1 | io.apptik.widget
2 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-espresso/script.js:
--------------------------------------------------------------------------------
1 | function show(type)
2 | {
3 | count = 0;
4 | for (var key in methods) {
5 | var row = document.getElementById(key);
6 | if ((methods[key] & type) != 0) {
7 | row.style.display = '';
8 | row.className = (count++ % 2) ? rowColor : altColor;
9 | }
10 | else
11 | row.style.display = 'none';
12 | }
13 | updateTabs(type);
14 | }
15 |
16 | function updateTabs(type)
17 | {
18 | for (var value in tabs) {
19 | var sNode = document.getElementById(tabs[value][0]);
20 | var spanNode = sNode.firstChild;
21 | if (value == type) {
22 | sNode.className = activeTableTab;
23 | spanNode.innerHTML = tabs[value][1];
24 | }
25 | else {
26 | sNode.className = tableTab;
27 | spanNode.innerHTML = "" + tabs[value][1] + "";
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/allclasses-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/allclasses-noframe.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/constant-values.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Constant Field Values (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/deprecated-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Deprecated List (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | mslider-uiautomator 1.3 API
7 |
60 |
61 |
72 |
73 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/io/apptik/widget/package-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
13 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/io/apptik/widget/package-summary.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
43 |
44 | - Prev Package
45 | - Next Package
46 |
47 |
51 |
54 |
55 |
65 |
66 |
67 |
68 |
69 |
70 |
73 |
74 |
75 | -
76 |
77 | Class Summary
78 |
79 | Class |
80 | Description |
81 |
82 |
83 |
84 | UiMultiSlider |
85 | |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
109 |
110 |
111 | - Prev Package
112 | - Next Package
113 |
114 |
118 |
121 |
122 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/io/apptik/widget/package-tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget Class Hierarchy (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
73 |
74 |
Class Hierarchy
75 |
76 | - java.lang.Object
77 |
78 | - UiScrollable
79 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
104 |
105 |
106 | - Prev
107 | - Next
108 |
109 |
113 |
116 |
117 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/overview-tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Class Hierarchy (mslider-uiautomator 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
77 |
78 |
Class Hierarchy
79 |
80 | - java.lang.Object
81 |
82 | - UiScrollable
83 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
108 |
109 |
110 | - Prev
111 | - Next
112 |
113 |
117 |
120 |
121 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/package-list:
--------------------------------------------------------------------------------
1 | io.apptik.widget
2 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider-uiautomator/script.js:
--------------------------------------------------------------------------------
1 | function show(type)
2 | {
3 | count = 0;
4 | for (var key in methods) {
5 | var row = document.getElementById(key);
6 | if ((methods[key] & type) != 0) {
7 | row.style.display = '';
8 | row.className = (count++ % 2) ? rowColor : altColor;
9 | }
10 | else
11 | row.style.display = 'none';
12 | }
13 | updateTabs(type);
14 | }
15 |
16 | function updateTabs(type)
17 | {
18 | for (var value in tabs) {
19 | var sNode = document.getElementById(tabs[value][0]);
20 | var spanNode = sNode.firstChild;
21 | if (value == type) {
22 | sNode.className = activeTableTab;
23 | spanNode.innerHTML = tabs[value][1];
24 | }
25 | else {
26 | sNode.className = tableTab;
27 | spanNode.innerHTML = "" + tabs[value][1] + "";
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/allclasses-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/allclasses-noframe.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | All Classes (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 | All Classes
13 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/constant-values.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Constant Field Values (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/deprecated-list.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Deprecated List (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
74 |
75 |
91 |
118 |
119 |
120 |
121 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | lib 1.3 API
7 |
60 |
61 |
72 |
73 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/io/apptik/widget/package-frame.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | io.apptik.widget (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
Interfaces
15 |
19 |
Classes
20 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/overview-tree.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Class Hierarchy (lib 1.3 API)
7 |
8 |
9 |
10 |
11 |
12 |
22 |
25 |
26 |
42 |
69 |
70 |
77 |
78 |
Class Hierarchy
79 |
80 | - java.lang.Object
81 |
91 |
92 |
93 |
Interface Hierarchy
94 |
98 |
99 |
100 |
116 |
117 |
118 | - Prev
119 | - Next
120 |
121 |
125 |
128 |
129 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/package-list:
--------------------------------------------------------------------------------
1 | io.apptik.widget
2 |
--------------------------------------------------------------------------------
/docs/javadoc/1.3/multislider/script.js:
--------------------------------------------------------------------------------
1 | function show(type)
2 | {
3 | count = 0;
4 | for (var key in methods) {
5 | var row = document.getElementById(key);
6 | if ((methods[key] & type) != 0) {
7 | row.style.display = '';
8 | row.className = (count++ % 2) ? rowColor : altColor;
9 | }
10 | else
11 | row.style.display = 'none';
12 | }
13 | updateTabs(type);
14 | }
15 |
16 | function updateTabs(type)
17 | {
18 | for (var value in tabs) {
19 | var sNode = document.getElementById(tabs[value][0]);
20 | var spanNode = sNode.firstChild;
21 | if (value == type) {
22 | sNode.className = activeTableTab;
23 | spanNode.innerHTML = tabs[value][1];
24 | }
25 | else {
26 | sNode.className = tableTab;
27 | spanNode.innerHTML = "" + tabs[value][1] + "";
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/example/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 |
7 | defaultConfig {
8 | applicationId "io.apptik.widget.example.multislider"
9 | minSdkVersion rootProject.ext.minSdkVersion
10 | targetSdkVersion rootProject.ext.compileSdkVersion
11 | versionCode 1
12 | versionName "1.0"
13 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
14 | }
15 | buildTypes {
16 | release {
17 | minifyEnabled false
18 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
19 | }
20 | }
21 | android {
22 | lintOptions {
23 | abortOnError false
24 | }
25 | }
26 | }
27 |
28 | dependencies {
29 | implementation rootProject.ext.supportAppCompat
30 | implementation project(':lib')
31 | implementation project(':holo-style')
32 | implementation project(':mslider-espresso')
33 | implementation project(':mslider-uiautomator')
34 | androidTestImplementation rootProject.ext.junit
35 | androidTestImplementation rootProject.ext.supportTestUiautomator
36 | androidTestImplementation rootProject.ext.supportAnnotations
37 | androidTestImplementation rootProject.ext.supportTestRunner
38 | androidTestImplementation rootProject.ext.supportTestRules
39 | androidTestImplementation rootProject.ext.supportTestEspresso
40 | }
41 |
--------------------------------------------------------------------------------
/example/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/djodjo/android-sdks/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/example/src/androidTest/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/example/src/androidTest/java/io/apptik/widget/example/multislider/ExampleTest.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget.example.multislider;
2 |
3 | import org.junit.Before;
4 | import org.junit.Rule;
5 | import org.junit.Test;
6 | import org.junit.runner.RunWith;
7 |
8 | import androidx.test.espresso.matcher.ViewMatchers;
9 | import androidx.test.ext.junit.runners.AndroidJUnit4;
10 | import androidx.test.filters.SdkSuppress;
11 | import androidx.test.platform.app.InstrumentationRegistry;
12 | import androidx.test.rule.ActivityTestRule;
13 | import androidx.test.uiautomator.UiCollection;
14 | import androidx.test.uiautomator.UiDevice;
15 | import androidx.test.uiautomator.UiSelector;
16 | import io.apptik.widget.MultiSlider;
17 | import io.apptik.widget.UiMultiSlider;
18 |
19 | import static androidx.test.espresso.Espresso.onView;
20 | import static androidx.test.espresso.action.ViewActions.click;
21 | import static io.apptik.widget.MultiSliderActions.moveThumbBackward;
22 | import static io.apptik.widget.MultiSliderActions.moveThumbForward;
23 | import static io.apptik.widget.MultiSliderActions.setThumbValue;
24 |
25 | @RunWith(AndroidJUnit4.class)
26 | @SdkSuppress(minSdkVersion = 18)
27 | public class ExampleTest {
28 |
29 | @Rule
30 | public ActivityTestRule mActivityRule = new ActivityTestRule<>(
31 | MyActivity.class);
32 |
33 | private UiDevice mDevice;
34 |
35 | @Before
36 | public void setUp() {
37 | mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
38 | }
39 |
40 | @Test
41 | public void moveSingle() throws Exception {
42 | UiMultiSlider slider = new UiMultiSlider(new UiCollection(new UiSelector()
43 | .className(MultiSlider.class)
44 | .resourceIdMatches(".*multiSlider2.*"))
45 | .getChild(new UiSelector().textStartsWith("thumb 0:")));
46 |
47 | for (int i = 0; i < 15; i++) {
48 | slider.moveThumbForward();
49 | }
50 | slider.setThumbValue(10);
51 | for (int i = 0; i < 10; i++) {
52 | slider.moveThumbBackward();
53 | }
54 | slider.moveThumbBackward();
55 |
56 | for (int i = 0; i < 90; i++) {
57 | onView(ViewMatchers.withId(R.id.multiSlider3))
58 | .perform(moveThumbForward(0));
59 | }
60 | onView(ViewMatchers.withId(R.id.multiSlider3))
61 | .perform(setThumbValue(0, 50));
62 | for (int i = 0; i < 15; i++) {
63 | onView(ViewMatchers.withId(R.id.multiSlider3))
64 | .perform(moveThumbBackward(0));
65 | }
66 | onView(ViewMatchers.withId(R.id.multiSlider3))
67 | .perform(click());
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/example/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/example/src/main/java/io/apptik/widget/example/multislider/MultiSliderFragmentMany.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Kalin Maldzhanski
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.apptik.widget.example.multislider;
18 |
19 |
20 | import android.app.Fragment;
21 | import android.graphics.drawable.ColorDrawable;
22 | import android.os.Bundle;
23 | import android.view.LayoutInflater;
24 | import android.view.View;
25 | import android.view.ViewGroup;
26 | import android.widget.TextView;
27 |
28 | import java.util.ArrayList;
29 |
30 | import io.apptik.widget.MultiSlider;
31 |
32 |
33 | public class MultiSliderFragmentMany extends Fragment {
34 |
35 |
36 | public MultiSliderFragmentMany() {
37 | // Required empty public constructor
38 | }
39 |
40 | @Override
41 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
42 | View v = inflater.inflate(R.layout.fragment_multi_slider_many, container, false);
43 | final ArrayList vals = new ArrayList();
44 | vals.add((TextView) v.findViewById(R.id.value1));
45 | vals.add((TextView) v.findViewById(R.id.value2));
46 | vals.add((TextView) v.findViewById(R.id.value3));
47 | vals.add((TextView) v.findViewById(R.id.value4));
48 | vals.add((TextView) v.findViewById(R.id.value5));
49 | vals.add((TextView) v.findViewById(R.id.value6));
50 | vals.add((TextView) v.findViewById(R.id.value7));
51 |
52 | MultiSlider multiSlider = (MultiSlider)v.findViewById(R.id.multiSlider);
53 |
54 | for(int i=0;i<7;i++) {
55 | vals.get(i).setText(String.valueOf(multiSlider.getThumb(i).getValue()));
56 | }
57 |
58 | multiSlider.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
59 | @Override
60 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
61 | vals.get(thumbIndex).setText(String.valueOf(value));
62 | }
63 |
64 | });
65 |
66 | //different ranges example
67 | multiSlider.getThumb(1).setRange( new ColorDrawable(0xFF000000));
68 | multiSlider.getThumb(2).setRange( new ColorDrawable(0xFFFF0000));
69 | multiSlider.getThumb(3).setRange( new ColorDrawable(0xFF00FF00));
70 | multiSlider.getThumb(4).setRange( new ColorDrawable(0xFF0000FF));
71 | multiSlider.getThumb(5).setRange( new ColorDrawable(0xFFFFFFFF));
72 | multiSlider.getThumb(6).setRange( new ColorDrawable(0x66FF0000));
73 |
74 | return v;
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/example/src/main/java/io/apptik/widget/example/multislider/MultiSliderFragmentSingle.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Kalin Maldzhanski
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package io.apptik.widget.example.multislider;
18 |
19 |
20 | import android.app.Fragment;
21 | import android.os.Bundle;
22 | import android.view.LayoutInflater;
23 | import android.view.View;
24 | import android.view.ViewGroup;
25 | import android.widget.TextView;
26 |
27 | import io.apptik.widget.MultiSlider;
28 |
29 |
30 | public class MultiSliderFragmentSingle extends Fragment {
31 |
32 |
33 | public MultiSliderFragmentSingle() {
34 | // Required empty public constructor
35 | }
36 |
37 | @Override
38 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
39 | View v = inflater.inflate(R.layout.fragment_multi_slider_single, container, false);
40 | final TextView min1 = (TextView) v.findViewById(R.id.minValue1);
41 | final TextView min2 = (TextView) v.findViewById(R.id.minValue2);
42 | final TextView min3 = (TextView) v.findViewById(R.id.minValue3);
43 | final TextView min4 = (TextView) v.findViewById(R.id.minValue4);
44 | final TextView min5 = (TextView) v.findViewById(R.id.minValue5);
45 | final TextView min6 = (TextView) v.findViewById(R.id.minValue6);
46 | final TextView min7 = (TextView) v.findViewById(R.id.minValue7);
47 |
48 | MultiSlider multiSlider1 = (MultiSlider) v.findViewById(R.id.multiSlider1);
49 | MultiSlider multiSlider2 = (MultiSlider) v.findViewById(R.id.multiSlider2);
50 | MultiSlider multiSlider3 = (MultiSlider) v.findViewById(R.id.multiSlider3);
51 | MultiSlider multiSlider4 = (MultiSlider) v.findViewById(R.id.multiSlider4);
52 | multiSlider4.getThumb(1).setInvisibleThumb(true);
53 | MultiSlider multiSlider5 = (MultiSlider) v.findViewById(R.id.multiSlider5);
54 | MultiSlider multiSlider6 = (MultiSlider) v.findViewById(R.id.multiSlider6);
55 | MultiSlider multiSlider7 = (MultiSlider) v.findViewById(R.id.multiSlider7);
56 |
57 | min1.setText(String.valueOf(multiSlider1.getThumb(0).getValue()));
58 | min2.setText(String.valueOf(multiSlider2.getThumb(0).getValue()));
59 | min3.setText(String.valueOf(multiSlider3.getThumb(0).getValue()));
60 | min4.setText(String.valueOf(multiSlider4.getThumb(0).getValue()));
61 | min5.setText(String.valueOf(multiSlider5.getThumb(0).getValue()));
62 | min6.setText(String.valueOf(multiSlider6.getThumb(0).getValue()));
63 | min7.setText(String.valueOf(multiSlider7.getThumb(0).getValue()));
64 |
65 | multiSlider1.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
66 | @Override
67 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
68 | min1.setText(String.valueOf(value));
69 | }
70 | });
71 |
72 |
73 | multiSlider2.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
74 | @Override
75 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
76 | min2.setText(String.valueOf(value));
77 | }
78 | });
79 |
80 | multiSlider3.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
81 | @Override
82 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
83 | min3.setText(String.valueOf(value));
84 | }
85 | });
86 |
87 | multiSlider4.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
88 | @Override
89 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
90 | min4.setText(String.valueOf(value));
91 | }
92 | });
93 |
94 | multiSlider5.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
95 | @Override
96 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
97 | min5.setText(String.valueOf(value));
98 | }
99 | });
100 |
101 | multiSlider6.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
102 | @Override
103 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
104 | min6.setText(String.valueOf(value));
105 | }
106 | });
107 |
108 | multiSlider7.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
109 | @Override
110 | public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
111 | min7.setText(String.valueOf(value));
112 | }
113 | });
114 |
115 | return v;
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/example/src/main/java/io/apptik/widget/example/multislider/MyActivity.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget.example.multislider;
2 |
3 | import android.app.ActionBar;
4 | import android.app.Activity;
5 | import android.app.Fragment;
6 | import android.app.FragmentManager;
7 | import android.os.Bundle;
8 | import android.view.LayoutInflater;
9 | import android.view.Menu;
10 | import android.view.MenuItem;
11 | import android.view.View;
12 | import android.view.ViewGroup;
13 |
14 | import androidx.drawerlayout.widget.DrawerLayout;
15 |
16 | public class MyActivity extends Activity
17 | implements NavigationDrawerFragment.NavigationDrawerCallbacks {
18 |
19 | /**
20 | * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
21 | */
22 | private NavigationDrawerFragment mNavigationDrawerFragment;
23 |
24 | /**
25 | * Used to store the last screen title. For use in {@link #restoreActionBar()}.
26 | */
27 | private CharSequence mTitle;
28 |
29 | @Override
30 | protected void onCreate(Bundle savedInstanceState) {
31 | super.onCreate(savedInstanceState);
32 | setContentView(R.layout.activity_my);
33 |
34 | mNavigationDrawerFragment = (NavigationDrawerFragment)
35 | getFragmentManager().findFragmentById(R.id.navigation_drawer);
36 | mTitle = getTitle();
37 |
38 | // Set up the drawer.
39 | mNavigationDrawerFragment.setUp(
40 | R.id.navigation_drawer,
41 | (DrawerLayout) findViewById(R.id.drawer_layout));
42 | }
43 |
44 | @Override
45 | public void onNavigationDrawerItemSelected(int position) {
46 | // update the main content by replacing fragments
47 | FragmentManager fragmentManager = getFragmentManager();
48 | fragmentManager.beginTransaction()
49 | .replace(R.id.container, PlaceholderFragment.newInstance(position + 1))
50 | .commit();
51 | }
52 |
53 | public void onSectionAttached(int number) {
54 | switch (number) {
55 | case 1:
56 | mTitle = getString(R.string.title_section1);
57 | break;
58 | case 2:
59 | mTitle = getString(R.string.title_section2);
60 | break;
61 | case 3:
62 | mTitle = getString(R.string.title_section3);
63 | break;
64 | }
65 | }
66 |
67 | public void restoreActionBar() {
68 | ActionBar actionBar = getActionBar();
69 | actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
70 | actionBar.setDisplayShowTitleEnabled(true);
71 | actionBar.setTitle(mTitle);
72 | }
73 |
74 |
75 | @Override
76 | public boolean onCreateOptionsMenu(Menu menu) {
77 | if (!mNavigationDrawerFragment.isDrawerOpen()) {
78 | // Only show items in the action bar relevant to this screen
79 | // if the drawer is not showing. Otherwise, let the drawer
80 | // decide what to show in the action bar.
81 |
82 | restoreActionBar();
83 | return true;
84 | }
85 | return super.onCreateOptionsMenu(menu);
86 | }
87 |
88 | @Override
89 | public boolean onOptionsItemSelected(MenuItem item) {
90 | return super.onOptionsItemSelected(item);
91 | }
92 |
93 | /**
94 | * A placeholder fragment containing a simple view.
95 | */
96 | public static class PlaceholderFragment extends Fragment {
97 | /**
98 | * The fragment argument representing the section number for this
99 | * fragment.
100 | */
101 | private static final String ARG_SECTION_NUMBER = "section_number";
102 |
103 | /**
104 | * Returns a new instance of this fragment for the given section
105 | * number.
106 | */
107 | public static PlaceholderFragment newInstance(int sectionNumber) {
108 | PlaceholderFragment fragment = new PlaceholderFragment();
109 | Bundle args = new Bundle();
110 | args.putInt(ARG_SECTION_NUMBER, sectionNumber);
111 | fragment.setArguments(args);
112 | return fragment;
113 | }
114 |
115 | public PlaceholderFragment() {
116 | }
117 |
118 | @Override
119 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
120 | Bundle savedInstanceState) {
121 | View rootView = inflater.inflate(R.layout.fragment_my, container, false);
122 | return rootView;
123 | }
124 |
125 | @Override
126 | public void onAttach(Activity activity) {
127 | super.onAttach(activity);
128 | ((MyActivity) activity).onSectionAttached(
129 | getArguments().getInt(ARG_SECTION_NUMBER));
130 |
131 | switch (getArguments().getInt(ARG_SECTION_NUMBER)) {
132 | case 1:getFragmentManager().beginTransaction().add(R.id.inner_container, new MultiSliderFragmentSingle()).commit(); break;
133 | case 2:getFragmentManager().beginTransaction().add(R.id.inner_container, new MultiSliderFragmentRange()).commit(); break;
134 | case 3:getFragmentManager().beginTransaction().add(R.id.inner_container, new MultiSliderFragmentMany()).commit(); break;
135 |
136 | }
137 | }
138 | }
139 |
140 | }
141 |
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/example_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/example_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/ic_drawer.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/example_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/example_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/ic_drawer.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/example_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/example_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/ic_drawer.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/example_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/example_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/ic_drawer.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable/example_bar_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/example/src/main/res/drawable/example_scrubber_control_selector_holo_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/example/src/main/res/drawable/example_scrubber_custom.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/example/src/main/res/drawable/example_scrubber_custom.9.png
--------------------------------------------------------------------------------
/example/src/main/res/drawable/example_scrubber_progress_horizontal_holo_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
20 | -
21 |
23 |
24 | -
25 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/activity_my.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
12 |
16 |
17 |
22 |
24 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/fragment_multi_slider_many.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
25 |
26 |
27 |
31 |
35 |
42 |
46 |
51 |
55 |
60 |
64 |
69 |
73 |
78 |
82 |
87 |
91 |
96 |
97 |
98 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/fragment_my.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
15 |
16 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/example/src/main/res/layout/fragment_navigation_drawer.xml:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/example/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/example/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/example/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 | #ffaa66cc
9 | #ff00ddff
10 | #ff99cc00
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
8 | 240dp
9 |
10 |
--------------------------------------------------------------------------------
/example/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MultiSlider
5 | MyActivity
6 | Single Thumb
7 | Range Example
8 | Multiple Thumbs
9 | Open navigation drawer
10 | Close navigation drawer
11 |
12 |
13 |
--------------------------------------------------------------------------------
/example/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | VERSION_NAME=1.4.0
21 | VERSION_CODE=8
22 | GROUP=io.apptik.widget
23 |
24 | POM_DESCRIPTION=Multi functional slider/seekbar( / rangebar / scrubber) for Android
25 | POM_URL=https://github.com/apptik/MultiSlider
26 | POM_SCM_URL=https://github.com/apptik/MultiSlider
27 | POM_SCM_CONNECTION=scm:git@github.com/apptik/MultiSlider.git
28 | POM_SCM_DEV_CONNECTION=scm:git@github.com/apptik/MultiSlider.git
29 | POM_LICENCE_NAME=The Apache Software License, Version 2.0
30 | POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
31 |
32 | POM_LICENCE_DIST=repo
33 | POM_DEVELOPER_ID=djodjo
34 | POM_DEVELOPER_NAME=Kalin Maldzhanski
35 |
36 | android.useAndroidX=true
37 | android.enableJetifier=true
38 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Sep 17 16:47:08 MSK 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # For Cygwin, ensure paths are in UNIX format before anything is touched.
46 | if $cygwin ; then
47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48 | fi
49 |
50 | # Attempt to set APP_HOME
51 | # Resolve links: $0 may be a link
52 | PRG="$0"
53 | # Need this for relative symlinks.
54 | while [ -h "$PRG" ] ; do
55 | ls=`ls -ld "$PRG"`
56 | link=`expr "$ls" : '.*-> \(.*\)$'`
57 | if expr "$link" : '/.*' > /dev/null; then
58 | PRG="$link"
59 | else
60 | PRG=`dirname "$PRG"`"/$link"
61 | fi
62 | done
63 | SAVED="`pwd`"
64 | cd "`dirname \"$PRG\"`/" >&-
65 | APP_HOME="`pwd -P`"
66 | cd "$SAVED" >&-
67 |
68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
69 |
70 | # Determine the Java command to use to start the JVM.
71 | if [ -n "$JAVA_HOME" ] ; then
72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
73 | # IBM's JDK on AIX uses strange locations for the executables
74 | JAVACMD="$JAVA_HOME/jre/sh/java"
75 | else
76 | JAVACMD="$JAVA_HOME/bin/java"
77 | fi
78 | if [ ! -x "$JAVACMD" ] ; then
79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
80 |
81 | Please set the JAVA_HOME variable in your environment to match the
82 | location of your Java installation."
83 | fi
84 | else
85 | JAVACMD="java"
86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
87 |
88 | Please set the JAVA_HOME variable in your environment to match the
89 | location of your Java installation."
90 | fi
91 |
92 | # Increase the maximum file descriptors if we can.
93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
94 | MAX_FD_LIMIT=`ulimit -H -n`
95 | if [ $? -eq 0 ] ; then
96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
97 | MAX_FD="$MAX_FD_LIMIT"
98 | fi
99 | ulimit -n $MAX_FD
100 | if [ $? -ne 0 ] ; then
101 | warn "Could not set maximum file descriptor limit: $MAX_FD"
102 | fi
103 | else
104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
105 | fi
106 | fi
107 |
108 | # For Darwin, add options to specify how the application appears in the dock
109 | if $darwin; then
110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
111 | fi
112 |
113 | # For Cygwin, switch paths to Windows format before running java
114 | if $cygwin ; then
115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158 | function splitJvmOpts() {
159 | JVM_OPTS=("$@")
160 | }
161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
163 |
164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/holo-style/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/holo-style/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 |
7 | defaultConfig {
8 | minSdkVersion rootProject.ext.minSdkVersion
9 | targetSdkVersion rootProject.ext.compileSdkVersion
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | lintOptions {
20 | abortOnError false
21 | }
22 | }
23 |
24 | dependencies {
25 | implementation project(':lib')
26 | }
27 |
28 |
29 | apply from: 'https://raw.githubusercontent.com/djodjoni/gradle-mvn-push/master/gradle-mvn-push-android.gradle'
30 |
--------------------------------------------------------------------------------
/holo-style/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | POM_NAME=Old Holo Theme for MultiSlider
21 | POM_ARTIFACT_ID=multislider-holo
22 | POM_PACKAGING=aar
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/holo-style/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/sic/dev/adt-bundle-mac-x86_64/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/holo-style/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/multislider_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/seek_thumb_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/seek_thumb_normal.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-hdpi/seek_thumb_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-hdpi/seek_thumb_pressed.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/multislider_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/seek_thumb_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/seek_thumb_normal.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-mdpi/seek_thumb_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-mdpi/seek_thumb_pressed.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/multislider_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/seek_thumb_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/seek_thumb_normal.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xhdpi/seek_thumb_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xhdpi/seek_thumb_pressed.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_disabled_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_disabled_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_focused_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_focused_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_normal_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_normal_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_pressed_holo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_control_pressed_holo.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_primary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_primary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_secondary_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_secondary_holo.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_track_holo_light.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/holo-style/src/main/res/drawable-xxhdpi/multislider_scrubber_track_holo_light.9.png
--------------------------------------------------------------------------------
/holo-style/src/main/res/drawable/multislider_scrubber_control_selector_holo_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/holo-style/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/holo-style/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/lib/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/lib/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 |
7 | defaultConfig {
8 | minSdkVersion rootProject.ext.minSdkVersion
9 | targetSdkVersion rootProject.ext.compileSdkVersion
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 |
14 | compileOptions {
15 | sourceCompatibility JavaVersion.VERSION_1_7
16 | targetCompatibility JavaVersion.VERSION_1_7
17 | }
18 | buildTypes {
19 | release {
20 | minifyEnabled false
21 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
22 | }
23 | }
24 | android {
25 | lintOptions {
26 | abortOnError false
27 | }
28 | }
29 | }
30 |
31 | dependencies {
32 | implementation rootProject.ext.supportCompat
33 | implementation rootProject.ext.supportDesign
34 | }
35 |
36 | apply from: 'https://raw.githubusercontent.com/djodjoni/gradle-mvn-push/master/gradle-mvn-push-android.gradle'
37 |
38 |
--------------------------------------------------------------------------------
/lib/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | POM_NAME=Multi functional slider/seekbar widget
21 | POM_ARTIFACT_ID=multislider
22 | POM_PACKAGING=aar
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/lib/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/djodjo/android-sdks/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/lib/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/src/main/java/io/apptik/widget/Util.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget;
2 |
3 |
4 | public class Util {
5 | private Util() {}
6 | /**
7 | * Returns {@code o} if non-null, or throws {@code NullPointerException}.
8 | */
9 | public static T requireNonNull(T o) {
10 | if (o == null) {
11 | throw new NullPointerException();
12 | }
13 | return o;
14 | }
15 | /**
16 | * Returns {@code o} if non-null, or throws {@code NullPointerException}
17 | * with the given detail message.
18 | */
19 | public static T requireNonNull(T o, String message) {
20 | if (o == null) {
21 | throw new NullPointerException(message);
22 | }
23 | return o;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/src/main/res/anim-v21/multislider_thumb_pressed_to_unpressed_thumb_animation.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
11 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/src/main/res/anim-v21/multislider_thumb_unpressed_to_pressed_thumb_0_animation.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
11 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/src/main/res/color-v21/control_highlight_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/lib/src/main/res/color/control_highlight_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/multislider_control_off_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/multislider_control_off_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/multislider_control_to_pressed_mtrl_000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/multislider_control_to_pressed_mtrl_000.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/multislider_control_to_pressed_mtrl_005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/multislider_control_to_pressed_mtrl_005.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/multislider_primary_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/multislider_primary_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/multislider_track_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/multislider_track_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/scrubber_control_on_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/scrubber_control_on_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-hdpi/scrubber_control_on_pressed_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-hdpi/scrubber_control_on_pressed_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-mdpi/multislider_control_off_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-mdpi/multislider_control_off_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-mdpi/multislider_control_to_pressed_mtrl_000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-mdpi/multislider_control_to_pressed_mtrl_000.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-mdpi/multislider_control_to_pressed_mtrl_005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-mdpi/multislider_control_to_pressed_mtrl_005.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-mdpi/multislider_primary_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-mdpi/multislider_primary_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-mdpi/multislider_track_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-mdpi/multislider_track_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/control_background_multi_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_range_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 | -
19 |
21 |
22 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_thumb_material_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 | -
18 |
26 |
28 |
31 |
32 |
33 |
34 |
38 |
41 |
45 |
49 |
50 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_thumb_pressed_to_unpressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
27 |
33 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_thumb_pressed_to_unpressed_animation.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_thumb_unpressed_to_pressed.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
27 |
31 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_thumb_unpressed_to_pressed_animation.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v21/multislider_track_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 | -
19 |
21 |
22 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v23/multislider_range_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 | -
19 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-v23/multislider_track_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 | -
19 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xhdpi/multislider_control_off_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xhdpi/multislider_control_off_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xhdpi/multislider_control_to_pressed_mtrl_000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xhdpi/multislider_control_to_pressed_mtrl_000.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xhdpi/multislider_control_to_pressed_mtrl_005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xhdpi/multislider_control_to_pressed_mtrl_005.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xhdpi/multislider_primary_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xhdpi/multislider_primary_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xhdpi/multislider_track_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xhdpi/multislider_track_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxhdpi/multislider_control_off_mtrl_alpha.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxhdpi/multislider_control_off_mtrl_alpha.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxhdpi/multislider_control_to_pressed_mtrl_000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxhdpi/multislider_control_to_pressed_mtrl_000.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxhdpi/multislider_control_to_pressed_mtrl_005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxhdpi/multislider_control_to_pressed_mtrl_005.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxhdpi/multislider_primary_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxhdpi/multislider_primary_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxhdpi/multislider_track_mtrl_alpha.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxhdpi/multislider_track_mtrl_alpha.9.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxxhdpi/multislider_control_to_pressed_mtrl_000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxxhdpi/multislider_control_to_pressed_mtrl_000.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable-xxxhdpi/multislider_control_to_pressed_mtrl_005.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/lib/src/main/res/drawable-xxxhdpi/multislider_control_to_pressed_mtrl_005.png
--------------------------------------------------------------------------------
/lib/src/main/res/drawable/multislider_range_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 | -
19 |
20 |
21 |
-
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable/multislider_thumb_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
19 | -
20 |
22 |
23 | -
24 |
26 |
27 | -
28 |
30 |
31 | -
32 |
34 |
35 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable/multislider_tick_mark_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
20 |
22 |
23 |
--------------------------------------------------------------------------------
/lib/src/main/res/drawable/multislider_track_material.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/lib/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #0000
5 | #ffffffff
6 |
7 |
--------------------------------------------------------------------------------
/lib/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 2dp
3 | 2dp
4 |
5 | 4dp
6 |
7 |
--------------------------------------------------------------------------------
/mslider-espresso/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/mslider-espresso/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 |
7 | defaultConfig {
8 | minSdkVersion rootProject.ext.minSdkVersion
9 | targetSdkVersion rootProject.ext.compileSdkVersion
10 | versionCode 1
11 | versionName "1.0"
12 |
13 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
14 |
15 | }
16 | buildTypes {
17 | release {
18 | minifyEnabled false
19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
20 | }
21 | }
22 | lintOptions {
23 | abortOnError false
24 | }
25 |
26 | }
27 |
28 | dependencies {
29 | implementation project(':lib')
30 | implementation rootProject.ext.supportTestEspresso
31 | }
32 |
33 | apply from: 'https://raw.githubusercontent.com/djodjoni/gradle-mvn-push/master/gradle-mvn-push-android.gradle'
34 |
--------------------------------------------------------------------------------
/mslider-espresso/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | POM_NAME=Espresso helper for MultiSlider widget
21 | POM_ARTIFACT_ID=multislider-espresso
22 | POM_PACKAGING=aar
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/mslider-espresso/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/sic/dev/adt-bundle-mac-x86_64/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/mslider-espresso/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/mslider-espresso/src/main/java/io/apptik/widget/MultiSliderActions.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget;
2 |
3 | import androidx.test.espresso.ViewAction;
4 | import androidx.test.espresso.action.ViewActions;
5 |
6 | public class MultiSliderActions {
7 |
8 | private MultiSliderActions() {}
9 |
10 | public static ViewAction moveThumbForward(int thumbId) {
11 | return ViewActions.actionWithAssertions(new SetThumbValueAction(thumbId, Integer.MAX_VALUE));
12 | }
13 |
14 | public static ViewAction moveThumbBackward(int thumbId) {
15 | return ViewActions.actionWithAssertions(new SetThumbValueAction(thumbId, Integer.MIN_VALUE));
16 | }
17 |
18 | public static ViewAction setThumbValue(int thumbId, int value) {
19 | return ViewActions.actionWithAssertions(new SetThumbValueAction(thumbId, value));
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/mslider-espresso/src/main/java/io/apptik/widget/SetThumbValueAction.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget;
2 |
3 | import android.view.View;
4 |
5 | import org.hamcrest.Matcher;
6 |
7 | import androidx.test.espresso.UiController;
8 | import androidx.test.espresso.ViewAction;
9 | import androidx.test.espresso.matcher.ViewMatchers;
10 |
11 | public class SetThumbValueAction implements ViewAction {
12 |
13 | private int value;
14 | private MultiSlider.Thumb thumb;
15 | private int thumbId = -1;
16 |
17 | public SetThumbValueAction(MultiSlider.Thumb thumb, int value) {
18 | this.value = value;
19 | }
20 |
21 | public SetThumbValueAction(int thumbId, int value) {
22 | this.value = value;
23 | this.thumbId = thumbId;
24 | }
25 |
26 | private String getThumbDesc() {
27 | if (thumbId < 0) {
28 | return thumb.getTag();
29 | } else {
30 | return "thumb Id: " + thumbId;
31 | }
32 | }
33 |
34 | private MultiSlider.Thumb getThumb(MultiSlider ms) {
35 | if (this.thumbId < 0) {
36 | return thumb;
37 | } else {
38 | return ms.getThumb(thumbId);
39 | }
40 | }
41 |
42 | @Override
43 | public Matcher getConstraints() {
44 | return ViewMatchers.isAssignableFrom(MultiSlider.class);
45 | }
46 |
47 | @Override
48 | public String getDescription() {
49 | if (value == Integer.MAX_VALUE) {
50 | return String.format("Move forward thumb: %s", getThumbDesc());
51 | } else if (value == Integer.MIN_VALUE) {
52 | return String.format("Move backward thumb: %s", getThumbDesc());
53 | } else return String.format("Set value (%s) for thumb: %s", value, getThumbDesc());
54 | }
55 |
56 | @Override
57 | public void perform(UiController uiController, View view) {
58 | if (value == Integer.MAX_VALUE) {
59 | value = getThumb((MultiSlider) view).getValue() + ((MultiSlider) view).getStep();
60 | } else if (value == Integer.MIN_VALUE) {
61 | value = getThumb((MultiSlider) view).getValue() - ((MultiSlider) view).getStep();
62 | }
63 | getThumb((MultiSlider) view).setValue(value);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/mslider-uiautomator/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/mslider-uiautomator/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion rootProject.ext.compileSdkVersion
5 | buildToolsVersion rootProject.ext.buildToolsVersion
6 |
7 | defaultConfig {
8 | minSdkVersion 18
9 | targetSdkVersion rootProject.ext.compileSdkVersion
10 | versionCode 1
11 | versionName "1.0"
12 |
13 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
14 |
15 | }
16 | buildTypes {
17 | release {
18 | minifyEnabled false
19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
20 | }
21 | }
22 |
23 | lintOptions {
24 | abortOnError false
25 | }
26 | }
27 |
28 | dependencies {
29 | implementation project(':lib')
30 | implementation rootProject.ext.supportTestUiautomator
31 | }
32 |
33 | apply from: 'https://raw.githubusercontent.com/djodjoni/gradle-mvn-push/master/gradle-mvn-push-android.gradle'
34 |
--------------------------------------------------------------------------------
/mslider-uiautomator/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Settings specified in this file will override any Gradle settings
5 | # configured through the IDE.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
20 | POM_NAME=UiAutomator helper for MultiSlider widget
21 | POM_ARTIFACT_ID=multislider-uiautomator
22 | POM_PACKAGING=aar
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/mslider-uiautomator/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/sic/dev/adt-bundle-mac-x86_64/sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/mslider-uiautomator/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/mslider-uiautomator/src/main/java/io/apptik/widget/UiMultiSlider.java:
--------------------------------------------------------------------------------
1 | package io.apptik.widget;
2 |
3 | import android.os.Bundle;
4 | import android.view.accessibility.AccessibilityNodeInfo;
5 |
6 | import androidx.test.uiautomator.Configurator;
7 | import androidx.test.uiautomator.UiObject;
8 | import androidx.test.uiautomator.UiObjectNotFoundException;
9 | import androidx.test.uiautomator.UiScrollable;
10 | import androidx.test.uiautomator.UiSelector;
11 |
12 | import static io.apptik.widget.MultiSlider.VirtualTreeProvider.ACT_SET_PROGRESS;
13 |
14 | public class UiMultiSlider extends UiScrollable {
15 |
16 | /**
17 | * Constructor.
18 | *
19 | * @param container a {@link UiSelector} selector to identify the scrollable
20 | * layout element.
21 | * @since API Level 16
22 | */
23 | public UiMultiSlider(UiSelector container) {
24 | super(container);
25 | setAsHorizontalList();
26 | }
27 |
28 | public UiMultiSlider(UiObject uiObject) {
29 | this(uiObject.getSelector());
30 | }
31 |
32 | public boolean moveThumbForward() throws UiObjectNotFoundException {
33 | AccessibilityNodeInfo ani =
34 | findAccessibilityNodeInfo(Configurator.getInstance().getWaitForSelectorTimeout());
35 | if (ani == null) {
36 | throw new UiObjectNotFoundException(getSelector().toString());
37 | }
38 | return ani.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
39 | }
40 |
41 | public boolean moveThumbBackward() throws UiObjectNotFoundException {
42 | AccessibilityNodeInfo ani =
43 | findAccessibilityNodeInfo(Configurator.getInstance().getWaitForSelectorTimeout());
44 | if (ani == null) {
45 | throw new UiObjectNotFoundException(getSelector().toString());
46 | }
47 | return ani.performAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD);
48 | }
49 |
50 | public boolean setThumbValue(int value) throws UiObjectNotFoundException {
51 | AccessibilityNodeInfo ani =
52 | findAccessibilityNodeInfo(Configurator.getInstance().getWaitForSelectorTimeout());
53 | if (ani == null) {
54 | throw new UiObjectNotFoundException(getSelector().toString());
55 | }
56 | Bundle args = new Bundle();
57 | args.putInt("value", value);
58 | return ani.performAction(ACT_SET_PROGRESS, args);
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/scrshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/scrshot1.png
--------------------------------------------------------------------------------
/scrshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/scrshot2.png
--------------------------------------------------------------------------------
/scrshot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apptik/MultiSlider/0c160afe8777ce1f6a90e0ab70fd67f1164519fa/scrshot3.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':mslider-espresso', ':mslider-uiautomator', ':holo-style'
2 | include 'example', 'lib'
3 |
--------------------------------------------------------------------------------