Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/castorflex/SmoothProgressBar
A small Android library allowing you to have a smooth and customizable horizontal or circular indeterminate ProgressBar
https://github.com/castorflex/SmoothProgressBar
Last synced: about 2 months ago
JSON representation
A small Android library allowing you to have a smooth and customizable horizontal or circular indeterminate ProgressBar
- Host: GitHub
- URL: https://github.com/castorflex/SmoothProgressBar
- Owner: castorflex
- License: apache-2.0
- Created: 2013-11-27T20:32:16.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2021-05-21T18:02:35.000Z (over 3 years ago)
- Last Synced: 2024-07-31T18:17:03.774Z (4 months ago)
- Language: Java
- Homepage:
- Size: 15 MB
- Stars: 4,506
- Watchers: 192
- Forks: 1,007
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- -awesome-android-ui - SmoothProgressBar - 2.0) | ![](/art/SmoothProgressBar.gif) (Index `(light-weight pages)`)
- awesome-android-ui - SmoothProgressBar - 2.0) | ![](/art/SmoothProgressBar.gif) (Index `(light-weight pages)`)
- awesome-android-ui - SmoothProgressBar - 2.0) | ![](/art/SmoothProgressBar.gif) (Index)
- awesome-android-Loaders - SmoothProgressBar - 2.0) | <img src="https://github.com/castorflex/SmoothProgressBar/blob/master/screenshots/SPB_sample.gif" width="100%"> (Index)
- awesome-android-ui - https://github.com/castorflex/SmoothProgressBar
README
## Description
Small library allowing you to make a smooth indeterminate progress bar. You can either user your progress bars and set this drawable or use directly the `SmoothProgressBarView`.
## Demo:
Sample app available on the [Play Store]![SmoothProgressBar](screenshots/SPB_sample.gif)
## How does it work
I wrote a [blog post] about that.
## Integration
**SmoothProgressBar** (min API 7): [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.castorflex.smoothprogressbar/library/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/com.github.castorflex.smoothprogressbar/library)
**CircularProgressBar** (min API 14): [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.castorflex.smoothprogressbar/library-circular/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/com.github.castorflex.smoothprogressbar/library-circular)
The lib is now on Maven Central. All you have to do is add it on your gradle build:
```groovy
dependencies {
// of course, do not write x.x.x but the version number
implementation 'com.github.castorflex.smoothprogressbar:library:x.x.x'
// or
implementation 'com.github.castorflex.smoothprogressbar:library-circular:x.x.x'
}
```
You can find the last stable version on [Gradle Please]Or you can try the latest snapshots: ![](https://img.shields.io/nexus/s/com.github.castorflex.smoothprogressbar/library?label=smoothprogressbar&server=https%3A%2F%2Foss.sonatype.org) ![](https://img.shields.io/nexus/s/com.github.castorflex.smoothprogressbar/library-circular?label=circular&server=https%3A%2F%2Foss.sonatype.org)
```groovy
repositories {
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}dependencies {
implementation 'com.github.castorflex.smoothprogressbar:library:1.4.0-SNAPSHOT'
implementation 'com.github.castorflex.smoothprogressbar:library-circular:1.4.0-SNAPSHOT'
}
```If you really want (or have) to use Eclipse, please look at the forks.
## Usage
- Use directly SmoothProgressBar:
```xml
```
Or use styles:
```xml
<item name="spbStyle">@style/GNowProgressBar</item>
<item name="cpbStyle">@style/CircularThemeProgressBar</item><item name="spb_stroke_separator_length">0dp</item>
<item name="spb_sections_count">2</item>
<item name="spb_speed">1.7</item>
<item name="spb_progressiveStart_speed">2</item>
<item name="spb_progressiveStop_speed">3.4</item>
<item name="spb_interpolator">spb_interpolator_acceleratedecelerate</item>
<item name="spb_mirror_mode">true</item>
<item name="spb_reversed">true</item>
<item name="spb_colors">@array/gplus_colors</item>
<item name="spb_progressiveStart_activated">true</item><item name="cpb_color">@color/cpb_default_color</item>
<item name="cpb_stroke_width">@dimen/cpb_default_stroke_width</item>
<item name="cpb_min_sweep_angle">@integer/cpb_default_min_sweep_angle</item>
<item name="cpb_max_sweep_angle">@integer/cpb_default_max_sweep_angle</item>
<item name="cpb_sweep_speed">@string/cpb_default_sweep_speed</item>
<item name="cpb_rotation_speed">@string/cpb_default_rotation_speed</item>```
*You can find more styles [in the sample app][Sample Themes]*
- Or instantiate a `SmoothProgressDrawable`/`CircularProgressDrawable` and set it to your ProgressBar
```java
mProgressBar.setIndeterminateDrawable(new SmoothProgressDrawable.Builder(context)
.color(0xff0000)
.interpolator(new DecelerateInterpolator())
.sectionsCount(4)
.separatorLength(8) //You should use Resources#getDimensionPixelSize
.strokeWidth(8f) //You should use Resources#getDimension
.speed(2f) //2 times faster
.progressiveStartSpeed(2)
.progressiveStopSpeed(3.4f)
.reversed(false)
.mirrorMode(false)
.progressiveStart(true)
.progressiveStopEndedListener(mListener) //called when the stop animation is over
.build());
mProgressBar.setIndeterminateDrawable(new CircularProgressDrawable
.Builder(this)
.colors(getResources().getIntArray(R.array.gplus_colors))
.sweepSpeed(1f)
.strokeWidth(mStrokeWidth)
.style(CircularProgressDrawable.Style.ROUNDED)
[ ... ]
.build();
```You can also set many colors for one bar (see G+ app)
- via xml (use the `app:spb_colors` attribute with a `integer-array` reference for that)
- programmatically (use `SmoothProgressDrawable.Builder#colors(int[])` method).
## License
```
Copyright 2014 Antoine MerleLicensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```#### Badges
CI master: ![](https://github.com/castorflex/smoothprogressbar/actions/workflows/build.yml/badge.svg?branch=master)
CI dev: ![](https://github.com/castorflex/smoothprogressbar/actions/workflows/build.yml/badge.svg?branch=dev)
[blog post]: http://antoine-merle.com/blog/2013/11/12/make-your-progressbar-more-smooth/
[Play Store]: https://play.google.com/store/apps/details?id=fr.castorflex.android.smoothprogressbar.sample
[Gradle Please]: http://gradleplease.appspot.com/#smoothprogressbar
[Sample Themes]: https://github.com/castorflex/SmoothProgressBar/blob/master/sample/src/main/res/values/styles.xml