├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── layout │ │ │ │ └── activity_ticker.xml │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ └── drawable │ │ │ │ └── ic_launcher_background.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── vinay │ │ │ └── ticker │ │ │ └── TickerActivity.java │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── vinay │ │ │ └── ticker │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── vinay │ │ └── ticker │ │ └── ExampleInstrumentedTest.java ├── release │ └── output.json ├── proguard-rules.pro └── build.gradle ├── tickerview ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── com │ │ │ └── vinay │ │ │ └── ticker │ │ │ └── lib │ │ │ └── TickerView.java │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── vinay │ │ │ └── ticker │ │ │ └── lib │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── vinay │ │ └── ticker │ │ └── lib │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── _config.yml ├── docs ├── _config.yml ├── package-list ├── allclasses-noframe.html ├── allclasses-frame.html ├── com │ └── vinay │ │ └── ticker │ │ └── lib │ │ ├── package-frame.html │ │ ├── package-use.html │ │ ├── class-use │ │ └── TickerView.html │ │ ├── package-tree.html │ │ └── package-summary.html ├── script.js ├── index.html ├── constant-values.html ├── overview-tree.html ├── help-doc.html └── index-all.html ├── java-docs ├── package-list ├── allclasses-noframe.html ├── allclasses-frame.html ├── com │ └── vinay │ │ └── ticker │ │ └── lib │ │ ├── package-frame.html │ │ ├── package-use.html │ │ ├── class-use │ │ └── TickerView.html │ │ ├── package-tree.html │ │ └── package-summary.html ├── script.js ├── index.html ├── constant-values.html ├── index-files │ ├── index-2.html │ ├── index-1.html │ ├── index-5.html │ ├── index-4.html │ ├── index-3.html │ ├── index-6.html │ ├── index-7.html │ └── index-8.html ├── overview-tree.html ├── help-doc.html └── index-all.html ├── settings.gradle ├── media └── image_gif.gif ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .idea ├── vcs.xml ├── modules.xml ├── runConfigurations.xml ├── codeStyles │ └── Project.xml └── misc.xml ├── gradle.properties ├── LICENSE ├── .gitignore ├── gradlew.bat ├── README.md └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /tickerview/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /docs/package-list: -------------------------------------------------------------------------------- 1 | com.vinay.ticker.lib 2 | -------------------------------------------------------------------------------- /java-docs/package-list: -------------------------------------------------------------------------------- 1 | com.vinay.ticker.lib 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':tickerview' 2 | -------------------------------------------------------------------------------- /media/image_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/media/image_gif.gif -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /tickerview/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | lib 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /tickerview/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Vinayrraj/TickerView/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Ticker 3 | Ticker Speed Controller: 4 | 5 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}] -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jul 11 21:31:58 IST 2018 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-4.4-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/com/vinay/ticker/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /tickerview/src/test/java/com/vinay/ticker/lib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker.lib; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /docs/allclasses-noframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 | 12 |

All Classes

13 |
14 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /java-docs/allclasses-noframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 | 12 |

All Classes

13 |
14 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /docs/allclasses-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 | 12 |

All Classes

13 |
14 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /java-docs/allclasses-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | All Classes 7 | 8 | 9 | 10 | 11 | 12 |

All Classes

13 |
14 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /tickerview/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/vinay/ticker/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.vinay.ticker", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /tickerview/src/androidTest/java/com/vinay/ticker/lib/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker.lib; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.vinay.ticker.lib.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /docs/com/vinay/ticker/lib/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 |

com.vinay.ticker.lib

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /java-docs/com/vinay/ticker/lib/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 |

com.vinay.ticker.lib

13 |
14 |

Classes

15 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/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 | -------------------------------------------------------------------------------- /java-docs/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 | -------------------------------------------------------------------------------- /tickerview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'com.github.dcendents.android-maven' 3 | 4 | group='com.github.vinayrraj' 5 | android { 6 | compileSdkVersion 28 7 | 8 | 9 | 10 | defaultConfig { 11 | minSdkVersion 19 12 | targetSdkVersion 28 13 | versionCode 1 14 | versionName "0.1-alpha" 15 | 16 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 17 | 18 | } 19 | 20 | buildTypes { 21 | release { 22 | minifyEnabled false 23 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 24 | } 25 | } 26 | 27 | } 28 | 29 | dependencies { 30 | implementation fileTree(dir: 'libs', include: ['*.jar']) 31 | 32 | implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' 33 | testImplementation 'junit:junit:4.12' 34 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 35 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 36 | } 37 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 28 5 | defaultConfig { 6 | applicationId "com.vinay.ticker" 7 | minSdkVersion 19 8 | targetSdkVersion 28 9 | versionCode 1 10 | versionName "1.0" 11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(include: ['*.jar'], dir: 'libs') 23 | implementation 'com.android.support:appcompat-v7:28.0.0-alpha3' 24 | implementation 'com.android.support.constraint:constraint-layout:1.1.2' 25 | testImplementation 'junit:junit:4.12' 26 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 27 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 28 | implementation project(':tickerview') 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Vinayraj Singh 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_ticker.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 15 | 16 | 24 | 25 | 31 | 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # IntelliJ 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/assetWizardSettings.xml 41 | .idea/dictionaries 42 | .idea/libraries 43 | .idea/caches 44 | 45 | # Keystore files 46 | # Uncomment the following line if you do not want to check your keystore files in. 47 | #*.jks 48 | 49 | # External native build folder generated in Android Studio 2.2 and later 50 | .externalNativeBuild 51 | 52 | # Google Services (e.g. APIs or Firebase) 53 | google-services.json 54 | 55 | # Freeline 56 | freeline.py 57 | freeline/ 58 | freeline_project_description.json 59 | 60 | # fastlane 61 | fastlane/report.xml 62 | fastlane/Preview.html 63 | fastlane/screenshots 64 | fastlane/test_output 65 | fastlane/readme.md 66 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/vinay/ticker/TickerActivity.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker; 2 | 3 | import android.os.Bundle; 4 | import android.support.v4.content.ContextCompat; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.util.TypedValue; 7 | import android.widget.FrameLayout; 8 | import android.widget.LinearLayout; 9 | import android.widget.SeekBar; 10 | import android.widget.TextView; 11 | 12 | import com.vinay.ticker.lib.TickerView; 13 | 14 | public class TickerActivity extends AppCompatActivity { 15 | 16 | @Override 17 | protected void onCreate(Bundle savedInstanceState) { 18 | super.onCreate(savedInstanceState); 19 | setContentView(R.layout.activity_ticker); 20 | initContent(); 21 | } 22 | 23 | private void initContent() { 24 | final SeekBar speedSeekView = findViewById(R.id.speedSeekView); 25 | final TickerView tickerView = findViewById(R.id.tickerView); 26 | for (int index = 0; index < 50; index++) { 27 | // childViews 28 | TextView tv = new TextView(this); 29 | tv.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT)); 30 | tv.setText(String.valueOf(index + 1)); 31 | tv.setBackgroundColor(ContextCompat.getColor(this, android.R.color.white)); 32 | tv.setTextColor(ContextCompat.getColor(this, android.R.color.black)); 33 | tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); 34 | tv.setPadding(10, 5, 10, 5); 35 | tickerView.addChildView(tv); 36 | } 37 | tickerView.showTickers(); 38 | 39 | speedSeekView.setProgress(tickerView.getDisplacement()); 40 | 41 | speedSeekView.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 42 | @Override 43 | public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 44 | tickerView.setDisplacement(i); 45 | } 46 | 47 | @Override 48 | public void onStartTrackingTouch(SeekBar seekBar) { 49 | 50 | } 51 | 52 | @Override 53 | public void onStopTrackingTouch(SeekBar seekBar) { 54 | 55 | } 56 | }); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /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 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 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 Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 22 | 35 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Generated Documentation (Untitled) 7 | 60 | 61 | 62 | 63 | 64 | 65 | <noscript> 66 | <div>JavaScript is disabled on your browser.</div> 67 | </noscript> 68 | <h2>Frame Alert</h2> 69 | <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="com/vinay/ticker/lib/package-summary.html">Non-frame version</a>.</p> 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /java-docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Generated Documentation (Untitled) 7 | 60 | 61 | 62 | 63 | 64 | 65 | <noscript> 66 | <div>JavaScript is disabled on your browser.</div> 67 | </noscript> 68 | <h2>Frame Alert</h2> 69 | <p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="com/vinay/ticker/lib/package-summary.html">Non-frame version</a>.</p> 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /docs/constant-values.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Constant Field Values 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Constant Field Values

72 |

Contents

73 |
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /java-docs/constant-values.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Constant Field Values 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Constant Field Values

72 |

Contents

73 |
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TickerView 2 | 3 | [![](https://jitpack.io/v/Vinayrraj/TickerView.svg)](https://jitpack.io/#Vinayrraj/TickerView) 4 | 5 | What is TickerView? 6 | =============== 7 | TickerView is a simple Android UI component for displaying horizontally scrolling Views placed inside this TickerView. For reference you may see how [MoneyControl Tablet](https://play.google.com/store/apps/details?id=com.moneycontrol) (shows stock price in scrolling view at the bottom of screen) and Phone app shows the Stock prices. The TickerView scrolls child views with smooth animation. 8 | 9 | Live Demo 10 | --------------- 11 | Google Play Store: [https://play.google.com/store/apps/details?id=com.vinay.ticker](https://play.google.com/store/apps/details?id=com.vinay.ticker) 12 | 13 | 14 | GIF 15 | --------------- 16 | 17 | ![Wait for the GIF image to load](/media/image_gif.gif) 18 | 19 | 20 | Getting started 21 | --------------- 22 | 23 | Add it in your root `build.gradle` at the end of repositories: 24 | 25 | ```groovy 26 | 27 | allprojects { 28 | repositories { 29 | maven { url 'https://jitpack.io' } 30 | } 31 | } 32 | 33 | ``` 34 | 35 | Add the ticker dependency to your `build.gradle`. 36 | 37 | ```groovy 38 | 39 | dependencies { 40 | implementation 'com.github.Vinayrraj:TickerView:v0.1-alpha' 41 | } 42 | 43 | ``` 44 | 45 | Usage 46 | ----- 47 | 48 | Define the `TickerView` in XML: 49 | 50 | ```xml 51 | 52 | 56 | ``` 57 | 58 | Then in java code, add the views to the TickerView: 59 | 60 | ```java 61 | 62 | // Get the TickerView object 63 | final TickerView tickerView = findViewById(R.id.tickerView); 64 | 65 | // Add multiple views to be shown in the ticker 66 | for (int index = 0; index < 50; index++) { 67 | // childViews 68 | TextView tv = new TextView(this); 69 | tv.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT)); 70 | tv.setText(String.valueOf(index + 1)); 71 | tv.setBackgroundColor(ContextCompat.getColor(this, android.R.color.white)); 72 | tv.setTextColor(ContextCompat.getColor(this, android.R.color.black)); 73 | tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22); 74 | tv.setPadding(10, 5, 10, 5); 75 | 76 | tickerView.addChildView(tv); 77 | } 78 | 79 | // Call the showTickers() to show them on the screen 80 | tickerView.showTickers(); 81 | 82 | ``` 83 | 84 | 85 | 86 | Documentation 87 | ----- 88 | 89 | Usage Documentation: [https://vinayrraj.github.io/TickerView/](https://vinayrraj.github.io/TickerView/) , 90 | 91 | Javadoc for the library can be viewed at: [https://vinayrraj.github.io/TickerView/java-docs/](https://vinayrraj.github.io/TickerView/java-docs/) 92 | 93 | 94 | How it Works? 95 | ----- 96 | 97 | TickerView extends HorizontalScrollView, which contains a LinearLayout. With the method setChildViews(List childViews)" or "addChildView(View childView)", we add child views to be plotted in the scrolling TickerView. 98 | Once Views are added to the TickerView, we set the left Margin for the First View and the right Margin for the Last View equalent to the width of the screen, so that the view statys on the screen for a certain time frame. 99 | Additionally, we have added a Marker View as the last view on the list, so that as soon as that view's Rect bounds (with width and height equal to the width and height of parent) intersects with the Rect object of the last Marker View. As soon as this contition is met, we reset the position of scroll and the auto scrolling starts back from the first View. 100 | 101 | Now to Automate the Scrolling process, we have created a Timer (which runs TimerTask) which schedule the movement/displacement given by the getDisplacement() method and the process continues till the view is detatched from windlow. 102 | 103 | 104 | Credits 105 | ----- 106 | 107 | vinayrraj@gmail.com 108 | 109 | [https://twitter.com/vinayrraj](https://twitter.com/vinayrraj) 110 | -------------------------------------------------------------------------------- /docs/com/vinay/ticker/lib/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Package com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Uses of Package
com.vinay.ticker.lib

72 |
73 |
No usage of com.vinay.ticker.lib
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /java-docs/com/vinay/ticker/lib/package-use.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Package com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Uses of Package
com.vinay.ticker.lib

72 |
73 |
No usage of com.vinay.ticker.lib
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /docs/com/vinay/ticker/lib/class-use/TickerView.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.vinay.ticker.lib.TickerView 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.vinay.ticker.lib.TickerView

72 |
73 |
No usage of com.vinay.ticker.lib.TickerView
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /java-docs/com/vinay/ticker/lib/class-use/TickerView.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Uses of Class com.vinay.ticker.lib.TickerView 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Uses of Class
com.vinay.ticker.lib.TickerView

72 |
73 |
No usage of com.vinay.ticker.lib.TickerView
74 | 75 |
76 | 77 | 78 | 79 | 80 | 81 | 82 | 90 |
91 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /java-docs/index-files/index-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | C-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

C

74 |
75 |
com.vinay.ticker.lib - package com.vinay.ticker.lib
76 |
 
77 |
78 | A C D G M O S T 
79 | 80 |
81 | 82 | 83 | 84 | 85 | 86 | 87 | 95 |
96 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /docs/overview-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Class Hierarchy 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Hierarchy For All Packages

72 | Package Hierarchies: 73 | 76 |
77 |
78 |

Class Hierarchy

79 |
    80 |
  • java.lang.Object 81 |
      82 |
    • android.view.View (implements android.view.accessibility.AccessibilityEventSource, android.graphics.drawable.Drawable.Callback, android.view.KeyEvent.Callback) 83 |
        84 |
      • android.view.ViewGroup (implements android.view.ViewManager, android.view.ViewParent) 85 |
          86 |
        • android.widget.FrameLayout 87 |
            88 |
          • android.widget.HorizontalScrollView 89 | 92 |
          • 93 |
          94 |
        • 95 |
        96 |
      • 97 |
      98 |
    • 99 |
    100 |
  • 101 |
102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 119 |
120 | 147 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /java-docs/overview-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Class Hierarchy 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Hierarchy For All Packages

72 | Package Hierarchies: 73 | 76 |
77 |
78 |

Class Hierarchy

79 |
    80 |
  • java.lang.Object 81 |
      82 |
    • android.view.View (implements android.view.accessibility.AccessibilityEventSource, android.graphics.drawable.Drawable.Callback, android.view.KeyEvent.Callback) 83 |
        84 |
      • android.view.ViewGroup (implements android.view.ViewManager, android.view.ViewParent) 85 |
          86 |
        • android.widget.FrameLayout 87 |
            88 |
          • android.widget.HorizontalScrollView 89 | 92 |
          • 93 |
          94 |
        • 95 |
        96 |
      • 97 |
      98 |
    • 99 |
    100 |
  • 101 |
102 |
103 | 104 |
105 | 106 | 107 | 108 | 109 | 110 | 111 | 119 |
120 | 147 | 148 | 149 | 150 | -------------------------------------------------------------------------------- /java-docs/index-files/index-1.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | A-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

A

74 |
75 |
addChildView(View) - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
User may individually add views to be shown into the TickerView
78 |
79 |
80 | A C D G M O S T 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 |
98 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /java-docs/index-files/index-5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | M-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

M

74 |
75 |
moveScrollView() - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
All the smooth scrolling/moving logic is implemented in this method.
78 |
79 |
80 | A C D G M O S T 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 |
98 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /java-docs/index-files/index-4.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | G-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

G

74 |
75 |
getDisplacement() - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
Use this method to get the speed of sticker movement, displacement speed of ticker views.
78 |
79 |
80 | A C D G M O S T 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 |
98 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /docs/com/vinay/ticker/lib/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib Class Hierarchy 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Hierarchy For Package com.vinay.ticker.lib

72 |
73 |
74 |

Class Hierarchy

75 |
    76 |
  • java.lang.Object 77 |
      78 |
    • android.view.View (implements android.view.accessibility.AccessibilityEventSource, android.graphics.drawable.Drawable.Callback, android.view.KeyEvent.Callback) 79 |
        80 |
      • android.view.ViewGroup (implements android.view.ViewManager, android.view.ViewParent) 81 |
          82 |
        • android.widget.FrameLayout 83 |
            84 |
          • android.widget.HorizontalScrollView 85 | 88 |
          • 89 |
          90 |
        • 91 |
        92 |
      • 93 |
      94 |
    • 95 |
    96 |
  • 97 |
98 |
99 | 100 |
101 | 102 | 103 | 104 | 105 | 106 | 107 | 115 |
116 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /java-docs/com/vinay/ticker/lib/package-tree.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib Class Hierarchy 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Hierarchy For Package com.vinay.ticker.lib

72 |
73 |
74 |

Class Hierarchy

75 |
    76 |
  • java.lang.Object 77 |
      78 |
    • android.view.View (implements android.view.accessibility.AccessibilityEventSource, android.graphics.drawable.Drawable.Callback, android.view.KeyEvent.Callback) 79 |
        80 |
      • android.view.ViewGroup (implements android.view.ViewManager, android.view.ViewParent) 81 |
          82 |
        • android.widget.FrameLayout 83 |
            84 |
          • android.widget.HorizontalScrollView 85 | 88 |
          • 89 |
          90 |
        • 91 |
        92 |
      • 93 |
      94 |
    • 95 |
    96 |
  • 97 |
98 |
99 | 100 |
101 | 102 | 103 | 104 | 105 | 106 | 107 | 115 |
116 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /java-docs/index-files/index-3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | D-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

D

74 |
75 |
destroyAllScheduledTasks() - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
This method cancels Timer and TimerTask and there callback.
78 |
79 |
80 | A C D G M O S T 
81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 97 |
98 | 125 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /docs/com/vinay/ticker/lib/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Package com.vinay.ticker.lib

72 |
73 |
74 |
    75 |
  • 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 89 | 90 | 91 |
    Class Summary 
    ClassDescription
    TickerView 86 |
    The TickerView class is a complex view which contains a LinearLayout which may contain any number of Views passed to it, 87 | to be shown in horizontal layout.
    88 |
    92 |
  • 93 |
94 |
95 | 96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | 111 |
112 | 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /java-docs/com/vinay/ticker/lib/package-summary.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | com.vinay.ticker.lib 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

Package com.vinay.ticker.lib

72 |
73 |
74 |
    75 |
  • 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 89 | 90 | 91 |
    Class Summary 
    ClassDescription
    TickerView 86 |
    The TickerView class is a complex view which contains a LinearLayout which may contain any number of Views passed to it, 87 | to be shown in horizontal layout.
    88 |
    92 |
  • 93 |
94 |
95 | 96 |
97 | 98 | 99 | 100 | 101 | 102 | 103 | 111 |
112 | 139 | 140 | 141 | 142 | -------------------------------------------------------------------------------- /java-docs/index-files/index-6.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | O-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

O

74 |
75 |
onAttachedToWindow() - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
If the views are added to the container view, the tickers start showing up.
78 |
79 |
onDetachedFromWindow() - Method in class com.vinay.ticker.lib.TickerView
80 |
81 |
If the views are added to the container view, this method, removed all scheduled TimerTasks by calling destroyAllScheduledTasks()
82 |
83 |
84 | A C D G M O S T 
85 | 86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 101 |
102 | 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Attempt to set APP_HOME 10 | # Resolve links: $0 may be a link 11 | PRG="$0" 12 | # Need this for relative symlinks. 13 | while [ -h "$PRG" ] ; do 14 | ls=`ls -ld "$PRG"` 15 | link=`expr "$ls" : '.*-> \(.*\)$'` 16 | if expr "$link" : '/.*' > /dev/null; then 17 | PRG="$link" 18 | else 19 | PRG=`dirname "$PRG"`"/$link" 20 | fi 21 | done 22 | SAVED="`pwd`" 23 | cd "`dirname \"$PRG\"`/" >/dev/null 24 | APP_HOME="`pwd -P`" 25 | cd "$SAVED" >/dev/null 26 | 27 | APP_NAME="Gradle" 28 | APP_BASE_NAME=`basename "$0"` 29 | 30 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 31 | DEFAULT_JVM_OPTS="" 32 | 33 | # Use the maximum available, or set MAX_FD != -1 to use that value. 34 | MAX_FD="maximum" 35 | 36 | warn () { 37 | echo "$*" 38 | } 39 | 40 | die () { 41 | echo 42 | echo "$*" 43 | echo 44 | exit 1 45 | } 46 | 47 | # OS specific support (must be 'true' or 'false'). 48 | cygwin=false 49 | msys=false 50 | darwin=false 51 | nonstop=false 52 | case "`uname`" in 53 | CYGWIN* ) 54 | cygwin=true 55 | ;; 56 | Darwin* ) 57 | darwin=true 58 | ;; 59 | MINGW* ) 60 | msys=true 61 | ;; 62 | NONSTOP* ) 63 | nonstop=true 64 | ;; 65 | esac 66 | 67 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 68 | 69 | # Determine the Java command to use to start the JVM. 70 | if [ -n "$JAVA_HOME" ] ; then 71 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 72 | # IBM's JDK on AIX uses strange locations for the executables 73 | JAVACMD="$JAVA_HOME/jre/sh/java" 74 | else 75 | JAVACMD="$JAVA_HOME/bin/java" 76 | fi 77 | if [ ! -x "$JAVACMD" ] ; then 78 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 79 | 80 | Please set the JAVA_HOME variable in your environment to match the 81 | location of your Java installation." 82 | fi 83 | else 84 | JAVACMD="java" 85 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 86 | 87 | Please set the JAVA_HOME variable in your environment to match the 88 | location of your Java installation." 89 | fi 90 | 91 | # Increase the maximum file descriptors if we can. 92 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then 93 | MAX_FD_LIMIT=`ulimit -H -n` 94 | if [ $? -eq 0 ] ; then 95 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 96 | MAX_FD="$MAX_FD_LIMIT" 97 | fi 98 | ulimit -n $MAX_FD 99 | if [ $? -ne 0 ] ; then 100 | warn "Could not set maximum file descriptor limit: $MAX_FD" 101 | fi 102 | else 103 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 104 | fi 105 | fi 106 | 107 | # For Darwin, add options to specify how the application appears in the dock 108 | if $darwin; then 109 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 110 | fi 111 | 112 | # For Cygwin, switch paths to Windows format before running java 113 | if $cygwin ; then 114 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 115 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 116 | JAVACMD=`cygpath --unix "$JAVACMD"` 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 | # Escape application args 158 | save () { 159 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done 160 | echo " " 161 | } 162 | APP_ARGS=$(save "$@") 163 | 164 | # Collect all arguments for the java command, following the shell quoting and substitution rules 165 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" 166 | 167 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong 168 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then 169 | cd "$(dirname "$0")" 170 | fi 171 | 172 | exec "$JAVACMD" "$@" 173 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 | 50 | 55 | 60 | 65 | 70 | 75 | 80 | 85 | 90 | 95 | 100 | 105 | 110 | 115 | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 | 165 | 170 | 171 | -------------------------------------------------------------------------------- /java-docs/index-files/index-7.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | S-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

S

74 |
75 |
setChildViews(List<View>) - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
Saves the views collection to be plotted in the ticker view.
78 |
79 |
setDisplacement(int) - Method in class com.vinay.ticker.lib.TickerView
80 |
81 |
This method is used to set the variable speed of displacement of auto-scrolling of views.
82 |
83 |
showTickers() - Method in class com.vinay.ticker.lib.TickerView
84 |
85 |
This method to show the child views added by addChildView() or setChildViews(List<View> childViews) methods.
86 |
87 |
startAutoScrolling() - Method in class com.vinay.ticker.lib.TickerView
88 |
89 |
This method initiates scheduler for auto scrolling, If there is already a scheduled Timer, this method will first cancel the timer and reschedule it.
90 |
91 |
92 | A C D G M O S T 
93 | 94 |
95 | 96 | 97 | 98 | 99 | 100 | 101 | 109 |
110 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /java-docs/index-files/index-8.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | T-Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

T

74 |
75 |
TickerView - Class in com.vinay.ticker.lib
76 |
77 |
The TickerView class is a complex view which contains a LinearLayout which may contain any number of Views passed to it, 78 | to be shown in horizontal layout.
79 |
80 |
TickerView(Context) - Constructor for class com.vinay.ticker.lib.TickerView
81 |
 
82 |
TickerView(Context, AttributeSet) - Constructor for class com.vinay.ticker.lib.TickerView
83 |
 
84 |
TickerView(Context, AttributeSet, int) - Constructor for class com.vinay.ticker.lib.TickerView
85 |
 
86 |
TickerView(Context, AttributeSet, int, int) - Constructor for class com.vinay.ticker.lib.TickerView
87 |
 
88 |
89 | A C D G M O S T 
90 | 91 |
92 | 93 | 94 | 95 | 96 | 97 | 98 | 106 |
107 | 134 | 135 | 136 | 137 | -------------------------------------------------------------------------------- /docs/help-doc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | API Help 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

How This API Document Is Organized

72 |
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
73 |
74 |
75 |
    76 |
  • 77 |

    Package

    78 |

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    79 |
      80 |
    • Interfaces (italic)
    • 81 |
    • Classes
    • 82 |
    • Enums
    • 83 |
    • Exceptions
    • 84 |
    • Errors
    • 85 |
    • Annotation Types
    • 86 |
    87 |
  • 88 |
  • 89 |

    Class/Interface

    90 |

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    91 |
      92 |
    • Class inheritance diagram
    • 93 |
    • Direct Subclasses
    • 94 |
    • All Known Subinterfaces
    • 95 |
    • All Known Implementing Classes
    • 96 |
    • Class/interface declaration
    • 97 |
    • Class/interface description
    • 98 |
    99 |
      100 |
    • Nested Class Summary
    • 101 |
    • Field Summary
    • 102 |
    • Constructor Summary
    • 103 |
    • Method Summary
    • 104 |
    105 |
      106 |
    • Field Detail
    • 107 |
    • Constructor Detail
    • 108 |
    • Method Detail
    • 109 |
    110 |

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    111 |
  • 112 |
  • 113 |

    Annotation Type

    114 |

    Each annotation type has its own separate page with the following sections:

    115 |
      116 |
    • Annotation Type declaration
    • 117 |
    • Annotation Type description
    • 118 |
    • Required Element Summary
    • 119 |
    • Optional Element Summary
    • 120 |
    • Element Detail
    • 121 |
    122 |
  • 123 |
  • 124 |

    Enum

    125 |

    Each enum has its own separate page with the following sections:

    126 |
      127 |
    • Enum declaration
    • 128 |
    • Enum description
    • 129 |
    • Enum Constant Summary
    • 130 |
    • Enum Constant Detail
    • 131 |
    132 |
  • 133 |
  • 134 |

    Use

    135 |

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    136 |
  • 137 |
  • 138 |

    Tree (Class Hierarchy)

    139 |

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    140 |
      141 |
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • 142 |
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • 143 |
    144 |
  • 145 |
  • 146 |

    Index

    147 |

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    148 |
  • 149 |
  • 150 |

    Prev/Next

    151 |

    These links take you to the next or previous class, interface, package, or related page.

    152 |
  • 153 |
  • 154 |

    Frames/No Frames

    155 |

    These links show and hide the HTML frames. All pages are available with or without frames.

    156 |
  • 157 |
  • 158 |

    All Classes

    159 |

    The All Classes link shows all classes and interfaces except non-static nested types.

    160 |
  • 161 |
  • 162 |

    Serialized Form

    163 |

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    164 |
  • 165 |
  • 166 |

    Constant Field Values

    167 |

    The Constant Field Values page lists the static final fields and their values.

    168 |
  • 169 |
170 | This help file applies to API documentation generated using the standard doclet.
171 | 172 |
173 | 174 | 175 | 176 | 177 | 178 | 179 | 187 |
188 | 215 | 216 | 217 | 218 | -------------------------------------------------------------------------------- /java-docs/help-doc.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | API Help 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
71 |

How This API Document Is Organized

72 |
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
73 |
74 |
75 |
    76 |
  • 77 |

    Package

    78 |

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    79 |
      80 |
    • Interfaces (italic)
    • 81 |
    • Classes
    • 82 |
    • Enums
    • 83 |
    • Exceptions
    • 84 |
    • Errors
    • 85 |
    • Annotation Types
    • 86 |
    87 |
  • 88 |
  • 89 |

    Class/Interface

    90 |

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    91 |
      92 |
    • Class inheritance diagram
    • 93 |
    • Direct Subclasses
    • 94 |
    • All Known Subinterfaces
    • 95 |
    • All Known Implementing Classes
    • 96 |
    • Class/interface declaration
    • 97 |
    • Class/interface description
    • 98 |
    99 |
      100 |
    • Nested Class Summary
    • 101 |
    • Field Summary
    • 102 |
    • Constructor Summary
    • 103 |
    • Method Summary
    • 104 |
    105 |
      106 |
    • Field Detail
    • 107 |
    • Constructor Detail
    • 108 |
    • Method Detail
    • 109 |
    110 |

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    111 |
  • 112 |
  • 113 |

    Annotation Type

    114 |

    Each annotation type has its own separate page with the following sections:

    115 |
      116 |
    • Annotation Type declaration
    • 117 |
    • Annotation Type description
    • 118 |
    • Required Element Summary
    • 119 |
    • Optional Element Summary
    • 120 |
    • Element Detail
    • 121 |
    122 |
  • 123 |
  • 124 |

    Enum

    125 |

    Each enum has its own separate page with the following sections:

    126 |
      127 |
    • Enum declaration
    • 128 |
    • Enum description
    • 129 |
    • Enum Constant Summary
    • 130 |
    • Enum Constant Detail
    • 131 |
    132 |
  • 133 |
  • 134 |

    Use

    135 |

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    136 |
  • 137 |
  • 138 |

    Tree (Class Hierarchy)

    139 |

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    140 |
      141 |
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • 142 |
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • 143 |
    144 |
  • 145 |
  • 146 |

    Index

    147 |

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    148 |
  • 149 |
  • 150 |

    Prev/Next

    151 |

    These links take you to the next or previous class, interface, package, or related page.

    152 |
  • 153 |
  • 154 |

    Frames/No Frames

    155 |

    These links show and hide the HTML frames. All pages are available with or without frames.

    156 |
  • 157 |
  • 158 |

    All Classes

    159 |

    The All Classes link shows all classes and interfaces except non-static nested types.

    160 |
  • 161 |
  • 162 |

    Serialized Form

    163 |

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    164 |
  • 165 |
  • 166 |

    Constant Field Values

    167 |

    The Constant Field Values page lists the static final fields and their values.

    168 |
  • 169 |
170 | This help file applies to API documentation generated using the standard doclet.
171 | 172 |
173 | 174 | 175 | 176 | 177 | 178 | 179 | 187 |
188 | 215 | 216 | 217 | 218 | -------------------------------------------------------------------------------- /docs/index-all.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

A

74 |
75 |
addChildView(View) - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
User may individually add views to be shown into the TickerView
78 |
79 |
80 | 81 | 82 | 83 |

C

84 |
85 |
com.vinay.ticker.lib - package com.vinay.ticker.lib
86 |
 
87 |
88 | 89 | 90 | 91 |

D

92 |
93 |
destroyAllScheduledTasks() - Method in class com.vinay.ticker.lib.TickerView
94 |
95 |
This method cancels Timer and TimerTask and there callback.
96 |
97 |
98 | 99 | 100 | 101 |

G

102 |
103 |
getDisplacement() - Method in class com.vinay.ticker.lib.TickerView
104 |
105 |
Use this method to get the speed of sticker movement, displacement speed of ticker views.
106 |
107 |
108 | 109 | 110 | 111 |

M

112 |
113 |
moveScrollView() - Method in class com.vinay.ticker.lib.TickerView
114 |
115 |
All the smooth scrolling/moving logic is implemented in this method.
116 |
117 |
118 | 119 | 120 | 121 |

O

122 |
123 |
onAttachedToWindow() - Method in class com.vinay.ticker.lib.TickerView
124 |
125 |
If the views are added to the container view, the tickers start showing up.
126 |
127 |
onDetachedFromWindow() - Method in class com.vinay.ticker.lib.TickerView
128 |
129 |
If the views are added to the container view, this method, removed all scheduled TimerTasks by calling destroyAllScheduledTasks()
130 |
131 |
132 | 133 | 134 | 135 |

S

136 |
137 |
setChildViews(List<View>) - Method in class com.vinay.ticker.lib.TickerView
138 |
139 |
Saves the views collection to be plotted in the ticker view.
140 |
141 |
setDisplacement(int) - Method in class com.vinay.ticker.lib.TickerView
142 |
143 |
This method is used to set the variable speed of displacement of auto-scrolling of views.
144 |
145 |
showTickers() - Method in class com.vinay.ticker.lib.TickerView
146 |
147 |
This method to show the child views added by addChildView() or setChildViews(List<View> childViews) methods.
148 |
149 |
startAutoScrolling() - Method in class com.vinay.ticker.lib.TickerView
150 |
151 |
This method initiates scheduler for auto scrolling, If there is already a scheduled Timer, this method will first cancel the timer and reschedule it.
152 |
153 |
154 | 155 | 156 | 157 |

T

158 |
159 |
TickerView - Class in com.vinay.ticker.lib
160 |
161 |
The TickerView class is a complex view which contains a LinearLayout which may contain any number of Views passed to it, 162 | to be shown in horizontal layout.
163 |
164 |
TickerView(Context) - Constructor for class com.vinay.ticker.lib.TickerView
165 |
 
166 |
TickerView(Context, AttributeSet) - Constructor for class com.vinay.ticker.lib.TickerView
167 |
 
168 |
TickerView(Context, AttributeSet, int) - Constructor for class com.vinay.ticker.lib.TickerView
169 |
 
170 |
TickerView(Context, AttributeSet, int, int) - Constructor for class com.vinay.ticker.lib.TickerView
171 |
 
172 |
173 | A C D G M O S T 
174 | 175 |
176 | 177 | 178 | 179 | 180 | 181 | 182 | 190 |
191 | 218 | 219 | 220 | 221 | -------------------------------------------------------------------------------- /java-docs/index-all.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Index 7 | 8 | 9 | 10 | 11 | 12 | 22 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 41 |
42 | 69 | 70 |
A C D G M O S T  71 | 72 | 73 |

A

74 |
75 |
addChildView(View) - Method in class com.vinay.ticker.lib.TickerView
76 |
77 |
User may individually add views to be shown into the TickerView
78 |
79 |
80 | 81 | 82 | 83 |

C

84 |
85 |
com.vinay.ticker.lib - package com.vinay.ticker.lib
86 |
 
87 |
88 | 89 | 90 | 91 |

D

92 |
93 |
destroyAllScheduledTasks() - Method in class com.vinay.ticker.lib.TickerView
94 |
95 |
This method cancels Timer and TimerTask and there callback.
96 |
97 |
98 | 99 | 100 | 101 |

G

102 |
103 |
getDisplacement() - Method in class com.vinay.ticker.lib.TickerView
104 |
105 |
Use this method to get the speed of sticker movement, displacement speed of ticker views.
106 |
107 |
108 | 109 | 110 | 111 |

M

112 |
113 |
moveScrollView() - Method in class com.vinay.ticker.lib.TickerView
114 |
115 |
All the smooth scrolling/moving logic is implemented in this method.
116 |
117 |
118 | 119 | 120 | 121 |

O

122 |
123 |
onAttachedToWindow() - Method in class com.vinay.ticker.lib.TickerView
124 |
125 |
If the views are added to the container view, the tickers start showing up.
126 |
127 |
onDetachedFromWindow() - Method in class com.vinay.ticker.lib.TickerView
128 |
129 |
If the views are added to the container view, this method, removed all scheduled TimerTasks by calling destroyAllScheduledTasks()
130 |
131 |
132 | 133 | 134 | 135 |

S

136 |
137 |
setChildViews(List<View>) - Method in class com.vinay.ticker.lib.TickerView
138 |
139 |
Saves the views collection to be plotted in the ticker view.
140 |
141 |
setDisplacement(int) - Method in class com.vinay.ticker.lib.TickerView
142 |
143 |
This method is used to set the variable speed of displacement of auto-scrolling of views.
144 |
145 |
showTickers() - Method in class com.vinay.ticker.lib.TickerView
146 |
147 |
This method to show the child views added by addChildView() or setChildViews(List<View> childViews) methods.
148 |
149 |
startAutoScrolling() - Method in class com.vinay.ticker.lib.TickerView
150 |
151 |
This method initiates scheduler for auto scrolling, If there is already a scheduled Timer, this method will first cancel the timer and reschedule it.
152 |
153 |
154 | 155 | 156 | 157 |

T

158 |
159 |
TickerView - Class in com.vinay.ticker.lib
160 |
161 |
The TickerView class is a complex view which contains a LinearLayout which may contain any number of Views passed to it, 162 | to be shown in horizontal layout.
163 |
164 |
TickerView(Context) - Constructor for class com.vinay.ticker.lib.TickerView
165 |
 
166 |
TickerView(Context, AttributeSet) - Constructor for class com.vinay.ticker.lib.TickerView
167 |
 
168 |
TickerView(Context, AttributeSet, int) - Constructor for class com.vinay.ticker.lib.TickerView
169 |
 
170 |
TickerView(Context, AttributeSet, int, int) - Constructor for class com.vinay.ticker.lib.TickerView
171 |
 
172 |
173 | A C D G M O S T 
174 | 175 |
176 | 177 | 178 | 179 | 180 | 181 | 182 | 190 |
191 | 218 | 219 | 220 | 221 | -------------------------------------------------------------------------------- /tickerview/src/main/java/com/vinay/ticker/lib/TickerView.java: -------------------------------------------------------------------------------- 1 | package com.vinay.ticker.lib; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.graphics.Rect; 6 | import android.os.Build; 7 | import android.support.annotation.RequiresApi; 8 | import android.support.v4.content.ContextCompat; 9 | import android.util.AttributeSet; 10 | import android.view.Gravity; 11 | import android.view.View; 12 | import android.view.ViewTreeObserver; 13 | import android.widget.HorizontalScrollView; 14 | import android.widget.LinearLayout; 15 | import android.widget.TextView; 16 | 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | import java.util.Timer; 20 | import java.util.TimerTask; 21 | 22 | /** 23 | * The {@code TickerView} class is a complex view which contains a {@code LinearLayout} which may contain any number of {@code View}s passed to it, 24 | * to be shown in horizontal layout. 25 | *

26 | * These child {@code View}s scroll horizontally in the main view holder, from left to right. 27 | * The speed of the view scrolling can be controlled by setting up the {@code displacement} value of views. Also can be controlled by user by finger gesture / sling motion. 28 | * 29 | * @see HorizontalScrollView 30 | */ 31 | public class TickerView extends HorizontalScrollView { 32 | 33 | private int displacement = 1; 34 | private int scrollPos = 0; 35 | private Timer scrollTimer = null; 36 | private TimerTask scrollerSchedule; 37 | private TextView lastTicker; 38 | private List childViews = null; 39 | private LinearLayout linearLayout; 40 | 41 | 42 | public TickerView(Context context) { 43 | super(context); 44 | init(context, null); 45 | } 46 | 47 | public TickerView(Context context, AttributeSet attrs) { 48 | super(context, attrs); 49 | init(context, null); 50 | } 51 | 52 | public TickerView(Context context, AttributeSet attrs, int defStyleAttr) { 53 | super(context, attrs, defStyleAttr); 54 | init(context, null); 55 | } 56 | 57 | @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 58 | public TickerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 59 | super(context, attrs, defStyleAttr, defStyleRes); 60 | init(context, null); 61 | } 62 | 63 | /** 64 | * If the views are added to the container view, the tickers start showing up. This method calls {@code showTickers()} 65 | */ 66 | @Override 67 | protected void onAttachedToWindow() { 68 | super.onAttachedToWindow(); 69 | showTickers(); 70 | } 71 | 72 | /** 73 | * If the views are added to the container view, this method, removed all scheduled {@code TimerTask}s by calling {@code destroyAllScheduledTasks()} 74 | */ 75 | @Override 76 | protected void onDetachedFromWindow() { 77 | destroyAllScheduledTasks(); 78 | super.onDetachedFromWindow(); 79 | } 80 | 81 | 82 | /** 83 | * This method initialized the View container by adding a horizontal {@code LinearLayout} onside the root view. 84 | * 85 | * @param context 86 | * @param attributeSet 87 | */ 88 | private void init(Context context, AttributeSet attributeSet) { 89 | LinearLayout linearLayout = new LinearLayout(context); 90 | linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 91 | linearLayout.setOrientation(LinearLayout.HORIZONTAL); 92 | linearLayout.setGravity(Gravity.CENTER_VERTICAL); 93 | setHorizontalFadingEdgeEnabled(false); 94 | setVerticalFadingEdgeEnabled(false); 95 | setForegroundGravity(Gravity.CENTER_VERTICAL); 96 | setHorizontalScrollBarEnabled(false); 97 | setBackgroundColor(ContextCompat.getColor(getContext(), android.R.color.background_dark)); 98 | setDisplacement(displacement); 99 | } 100 | 101 | 102 | /** 103 | * Use this method to get the speed of sticker movement, displacement speed of ticker views. 104 | * 105 | * @return the speed of view's rate of displacement 106 | */ 107 | public int getDisplacement() { 108 | return displacement; 109 | } 110 | 111 | /** 112 | * This method is used to set the variable speed of displacement of auto-scrolling of views. 113 | * 114 | * @param displacement value by which the auto-scrolling displacement occurs 115 | */ 116 | public void setDisplacement(int displacement) { 117 | this.displacement = (int) Math.ceil((displacement) * 5.0 / 100.0); 118 | } 119 | 120 | 121 | /** 122 | * Saves the views collection to be plotted in the ticker view. 123 | * 124 | * @param childViews {@code List} which contains all the views to be added into the {@code TickerView} 125 | */ 126 | public void setChildViews(List childViews) { 127 | this.childViews = childViews; 128 | } 129 | 130 | /** 131 | * User may individually add views to be shown into the {@code TickerView} 132 | * 133 | * @param childView {@code View} to be added as child to the {@code TickerView}. 134 | */ 135 | public void addChildView(View childView) { 136 | if (childViews == null) { 137 | childViews = new ArrayList<>(); 138 | } 139 | this.childViews.add(childView); 140 | } 141 | 142 | /** 143 | * This method to show the child views added by {@code addChildView()} or {@code setChildViews(List childViews)} methods. 144 | * Method Details: 145 | * 1. This method first removes any older child views already shown inside the {@code TickerView} 146 | * 2. Adds all the passed views to the {@code TickerView} by the methods {@code addChildView()} or {@code setChildViews(List childViews)}. 147 | * 3. Corresponding Layout params are set for all the views, the first and last components are set with width equal to screen width, so that the view scrooling starts at left side of screen and the last component completes the cycle at rigjt end of screen, then only the new cycle begins. 148 | * 4. An empty marker view is placed at the end of the view list so that, as soon as the ScrollBounds of that view comes into the {@code Rect}, we start a new cycle and starts scrolling form the first record. 149 | * 5. We add {@code ViewTreeObserver.OnGlobalLayoutListener} to intercept changes in global layout and start auto scrolling by calling {@code startAutoScrolling()} method. 150 | */ 151 | public void showTickers() { 152 | if (linearLayout != null) { 153 | linearLayout.removeAllViews(); 154 | } 155 | removeAllViewsInLayout(); 156 | linearLayout = new LinearLayout(getContext()); 157 | 158 | final LinearLayout.LayoutParams lp_par = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT); 159 | final LinearLayout.LayoutParams lp_par_0 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT); 160 | final LinearLayout.LayoutParams lp_par_last = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT); 161 | linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 162 | 163 | lp_par.setMargins(10, 3, 5, 3); 164 | lp_par_0.setMargins(((Activity) getContext()).getWindowManager().getDefaultDisplay().getWidth(), 3, 5, 3); 165 | lp_par_last.setMargins(5, 3, ((Activity) getContext()).getWindowManager().getDefaultDisplay().getWidth(), 3); 166 | if (childViews != null && !childViews.isEmpty()) { 167 | for (int index = 0; index < childViews.size(); index++) { 168 | if (index == 0) { 169 | linearLayout.addView(childViews.get(index), lp_par_0); 170 | } else if (index == childViews.size() - 1) { 171 | linearLayout.addView(childViews.get(index), lp_par_last); 172 | 173 | } else { 174 | linearLayout.addView(childViews.get(index), lp_par); 175 | } 176 | } 177 | lastTicker = new TextView(getContext()); 178 | lastTicker.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 179 | lastTicker.setVisibility(INVISIBLE); 180 | linearLayout.addView(lastTicker, lp_par); 181 | 182 | ViewTreeObserver vto = getViewTreeObserver(); 183 | vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 184 | 185 | public void onGlobalLayout() { 186 | getViewTreeObserver().removeOnGlobalLayoutListener(this); 187 | startAutoScrolling(); 188 | } 189 | }); 190 | addView(linearLayout); 191 | } 192 | } 193 | 194 | /** 195 | * This method initiates scheduler for auto scrolling, If there is already a scheduled {@code Timer}, this method will first cancel the timer and reschedule it. On Regular intervals, 196 | * this {@code Timer} runs a {@code moveScrollView()} method on UI thread to scroll the views by the provided {@code getDisplacement()} value. 197 | *

198 | * This only schedules a timer if the {@code getDisplacement()} value is greater than 0. 199 | */ 200 | public void startAutoScrolling() { 201 | if (scrollTimer != null) { 202 | scrollTimer.cancel(); 203 | } 204 | scrollTimer = new Timer(); 205 | final Runnable timer_tick = new Runnable() { 206 | public void run() { 207 | moveScrollView(); 208 | } 209 | }; 210 | 211 | if (scrollerSchedule != null) { 212 | scrollerSchedule.cancel(); 213 | scrollerSchedule = null; 214 | } 215 | scrollerSchedule = new TimerTask() { 216 | @Override 217 | public void run() { 218 | try { 219 | ((Activity) getContext()).runOnUiThread(timer_tick); 220 | } catch (Exception e) { 221 | e.printStackTrace(); 222 | if (this != null) { 223 | this.cancel(); 224 | } 225 | } 226 | } 227 | }; 228 | 229 | if (displacement > 0) { 230 | scrollTimer.schedule(scrollerSchedule, 30, 30); 231 | } 232 | 233 | } 234 | 235 | /** 236 | * All the smooth scrolling/moving logic is implemented in this method. This method moves the Ticker views by the provided displacement value. 237 | *

238 | * The logic in place is to get a {@code Rect} and set it for custom last marker ticker(invisible). An additional {@code Rect} object is created whose horizontal bounds are 239 | * for how much the view has scrolled added to its width. Once we have both of these objects, we simply check if the {@code Rect}object for last custom ticker view (invisible) 240 | * intersects with the current screen {@code Rect} object, as soon as the condition is met, which means the last hidden view has scrolled on to the screen, which in tern means all the ticker items have been shown, we set the scroll position to 0 again,, and the scrolling starts from the first Tivker view again. 241 | */ 242 | public void moveScrollView() { 243 | 244 | try { 245 | scrollPos = (int) (getScrollX() + displacement); 246 | 247 | final Rect bounds = new Rect(); 248 | lastTicker.getHitRect(bounds); 249 | 250 | final Rect scrollBounds = new Rect(getScrollX(), getScrollY(), getScrollX() 251 | + getWidth(), getScrollY() + getHeight()); 252 | 253 | if (Rect.intersects(scrollBounds, bounds)) { 254 | // is visible 255 | scrollPos = 0; 256 | scrollTo(scrollPos, 0); 257 | } else { 258 | smoothScrollTo(scrollPos, 0); 259 | } 260 | } catch (Exception e) { 261 | e.printStackTrace(); 262 | } 263 | } 264 | 265 | /** 266 | * This method cancels {@code Timer} and {@code TimerTask} and there callback. 267 | */ 268 | public void destroyAllScheduledTasks() { 269 | clearTimerTaks(scrollerSchedule); 270 | clearTimers(scrollTimer); 271 | 272 | scrollerSchedule = null; 273 | scrollTimer = null; 274 | 275 | } 276 | 277 | /** 278 | * This method cancels {@code Timer}. 279 | */ 280 | private void clearTimers(Timer timer) { 281 | if (timer != null) { 282 | timer.cancel(); 283 | } 284 | } 285 | 286 | /** 287 | * This method cancels {@code TimerTask}. 288 | */ 289 | private void clearTimerTaks(TimerTask timerTask) { 290 | if (timerTask != null) { 291 | timerTask.cancel(); 292 | } 293 | } 294 | } 295 | --------------------------------------------------------------------------------