Now deprecated. A small Android library allowing you to have a smooth and customizable horizontal indeterminate ProgressBar

Overview

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

How does it work

I wrote a blog post about that.

Integration

SmoothProgressBar (min API 7): Maven Central

CircularProgressBar (min API 14): Maven Central

The lib is now on Maven Central. All you have to do is add it on your gradle build:

dependencies {
    // of course, do not write x.x.x but the version number
    compile 'com.github.castorflex.smoothprogressbar:library:x.x.x'
    // or
    compile '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:

repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {
    compile 'com.github.castorflex.smoothprogressbar:library:1.0.1-SNAPSHOT@aar'
    compile 'com.github.castorflex.smoothprogressbar:library-circular:1.0.1-SNAPSHOT@aar'
}

If you really want (or have) to use Eclipse, please look at the forks.

Usage

  • Use directly SmoothProgressBar:
<fr.castorflex.android.smoothprogressbar.SmoothProgressBar
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    app:spb_sections_count="4"
    app:spb_color="#FF0000"
    app:spb_speed="2.0"
    app:spb_stroke_width="4dp"
    app:spb_stroke_separator_length="4dp"
    app:spb_reversed="false"
    app:spb_mirror_mode="false"
    app:spb_progressiveStart_activated="true"
    app:spb_progressiveStart_speed="1.5"
    app:spb_progressiveStop_speed="3.4"
    />

<fr.castorflex.android.circularprogressbar.CircularProgressBar
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    app:cpb_color="#FFee44"
    app:cpb_colors="@array/mycolors"
    app:cpb_rotation_speed="1.0"
    app:cpb_sweep_speed="1.0"
    app:cpb_stroke_width="4dp"
    app:cpb_min_sweep_angle="10"
    app:cpb_max_sweep_angle="300"
    />

Or use styles:

<style name="AppTheme">
    <item name="spbStyle">@style/GNowProgressBar</item>
    <item name="cpbStyle">@style/CircularThemeProgressBar</item>
</style>

<style name="GNowProgressBar" parent="SmoothProgressBar">
    <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>
</style>

<style name="CircularThemeProgressBar" parent="android:Widget.Holo.ProgressBar">
        <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>
</style>

You can find more styles in the sample app

  • Or instantiate a SmoothProgressDrawable/CircularProgressDrawable and set it to your ProgressBar
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 Merle

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Badges

Travis master: Build Status

Travis dev: Build Status

Comments
  • Adding two methods to call progressiveStop after a delay, to fix an issu...

    Adding two methods to call progressiveStop after a delay, to fix an issu...

    Adding two methods to call progressiveStop after a delay, to fix an issue that happens when progressiveStart() and progressiveStop() are called too fast.

    opened by rocboronat 15
  • Custom color with ActionBar-PullToRefresh

    Custom color with ActionBar-PullToRefresh

    ActionBar-PullToRefresh is deprecated (https://github.com/chrisbanes/ActionBar-PullToRefresh) but I have a problem with the progress bar color.

    The custom color doesn't work since v0.9.9 (default blue). It was ok with v0.9.3.

    ActionBar-PullToRefresh changes the color with this code: https://github.com/chrisbanes/ActionBar-PullToRefresh/blob/master/library/src/main/java/uk/co/senab/actionbarpulltorefresh/library/DefaultHeaderTransformer.java#L375-L384

    The dependency for SmoothProgressBar has changed between v0.9.9 and v0.9.3: https://github.com/chrisbanes/ActionBar-PullToRefresh/commit/8312bcd6f184ad1dbc79528698b9a8c64cf47694

    Can you help me?

    opened by pierrre 12
  • SmoothProgressBar starts on resume activity

    SmoothProgressBar starts on resume activity

    Heya,

    My compliments for this awesome library! I love the way I can customize the progress bar on so many levels.

    I am running into an issue with my progress bar starting, when my activity resumes (after dismissing another activity and coming back to the progress bar activity).

    I tried to handle it with the setSmoothProgressDrawableCallbacks, and handling hiding & showing in the onStop() and onStart() methods, but this doesn't give the expected result.

    I am initializing my progress bar in my activity's onCreate():

    mProgressBar = (SmoothProgressBar) findViewById(R.id.route_detail_progressbar);
    mProgressBar.setVisibility(View.VISIBLE);
    mProgressBar.setSmoothProgressDrawableCallbacks(new ProgressBarListener());
    mProgressBar.progressiveStart();
    

    And having customized the progress bar in XML:

    <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/route_detail_progressbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            android:layout_marginTop="-3dp"
            android:visibility="gone"
            app:spb_sections_count="2"
            app:spb_color="@color/Primary"
            app:spb_speed="0.7"
            app:spb_stroke_width="7dp"
            app:spb_stroke_separator_length="16dp"
            app:spb_reversed="false"
            app:spb_mirror_mode="false"
            app:spb_progressiveStart_activated="true"
            app:spb_progressiveStart_speed="1.5"
            app:spb_progressiveStop_speed="3.4"
            />
    

    Without adding the ProgressBarListener, everything works as expected, except that when the activity comes in view, it starts again.

    My ProgressBarListener:

    private class ProgressBarListener implements SmoothProgressDrawable.Callbacks
        {
            @Override
            public void onStop() {
                mProgressBar.setVisibility(View.GONE);
            }
    
            @Override
            public void onStart() {
                mProgressBar.setVisibility(View.VISIBLE);
            }
        }
    

    With the listener, I don't see the progress bar at all.

    Do you have any idea what I am doing wrong? I've put breakpoints in the listener, and it seems that onStop() is called first, then onStart() is called twice strangely enough.

    Thanks in advance!

    opened by Thermometer91 11
  • Gradient options

    Gradient options

    If possible It would be great to see some options to customize the space between the stroke separator.

    For example I'm looking customize the progress bar as shown in this image: http://prntscr.com/38vehl

    I've tried drawables but the style will only allow for colors is there any way of assigning a gradient to the background?

    opened by derekcsm 11
  • Not working after upgrading to api level 26 with android studio 3.0: Error inflating class fr.castorflex.android.circularprogressbar.CircularProgressBar

    Not working after upgrading to api level 26 with android studio 3.0: Error inflating class fr.castorflex.android.circularprogressbar.CircularProgressBar

    Process: com.whereismytrain.android.debug, PID: 29061 android.view.InflateException: Binary XML file line #22: Binary XML file line #22: Error inflating class fr.castorflex.android.circularprogressbar.CircularProgressBar Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class fr.castorflex.android.circularprogressbar.CircularProgressBar Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:430) at android.view.LayoutInflater.createView(LayoutInflater.java:645) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) at android.view.LayoutInflater.rInflate(LayoutInflater.java:858) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.rInflate(LayoutInflater.java:861) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at com.whereismytrain.activities.PnrMasterFragment.onCreateView(PnrMasterFragment.java:144) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2343) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1740) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1809) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:799) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:2199) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167) at android.support.v4.view.ViewPager.populate(ViewPager.java:1236) at android.support.v4.view.ViewPager.populate(ViewPager.java:1084) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1614) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19857) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1060) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19857) 08-13 00:55:35.988 29061-29061/com.whereismytrain.android.debug E/AndroidRuntime: at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464) at android.widget.LinearLayout.measureVertical(LinearLayout.java:758) at android.widget.LinearLayout.onMeasure(LinearLayout.java:640) at android.view.View.measure(View.java:19857) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6083) at android.widget.FrameLayout.onMeasure(FrameLayout.java:185) at com.android.internal.policy.DecorView.onMeasure(DecorView.java:689) at android.view.View.measure(View.java:19857) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2275) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1366) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1619) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) at android.view.Choreographer.doCallbacks(Choreographer.java:686) at android.view.Choreographer.doFrame(Choreographer.java:621) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 3 to dimension: type=0x10 at android.content.res.TypedArray.getDimension(TypedArray.java:621) at fr.castorflex.android.circularprogressbar.CircularProgressBar.(CircularProgressBar.java:36) at fr.castorflex.android.circularprogressbar.CircularProgressBar.(CircularProgressBar.java:20)

    opened by nizamsp 10
  • Add option to automatically scale SPB settings for different screen sizes

    Add option to automatically scale SPB settings for different screen sizes

    SPB works great, and you can setup your own styles for different resource qualifiers, but it'd be great if you could set some of the options to scale automatically based on width. For example, a section count of "4" with a separator length of "4dp" works great for a phone portrait layout, but on a landscape Nexus 10 it looks silly.

    I can setup my own custom options for varying widths, but it'd be great if it could take the bounds and automatically scale the value based on that.

    opened by dlew 8
  • Adding empty <application/> tag for solving the build issue while using different target sdk

    Adding empty tag for solving the build issue while using different target sdk

    I am using this library in a project with a target sdk 17. Since that the target sdk in the library is 19 gradle build gives error. I searched it and found a suggestion in this page. (http://stackoverflow.com/a/17757200/937715)

    Can you please add this to manifest or show me any other solution than that if you have one? Thanks.

    This is the error message: ... Main manifest has but library uses targetSdkVersion='19'

    opened by eluleci 8
  • CircularProgressBar in Power Saving Mode

    CircularProgressBar in Power Saving Mode

    Hello!

    With android 5 came the new Power saving mode. In this mode all animations are ended instantly. The CircularProgressBar is looking pretty weird and hectic if this mode is enabled, as all animations are ended and startet again very quickly. (Can also be reproduced by disabling the animation duration in android developer setting)

    Is there any known workaround for this? This has to be possible somehow, because i've seen it working in the gmail app: If you refresh your email list in gmail, a CircularProgressDrawable is shown correctly, also when power saving mode is enabled.

    Thanks

    bug 
    opened by joseffilzmaier 7
  • spb_default_speed format issue

    spb_default_speed format issue

    There is someting wrong with

    <item name="spb_default_speed" format="float" type="string">1.0</item>
    

    I get error logs

    02-07 21:27:22.925  28530-28530/com.docd.purefm W/Resources﹕ Converting to string: TypedValue{t=0x4/d=0x3f800000 a=2 r=0x7f0d0077}
    

    Which points to this resource (is was 0x7f0d0077)

    opened by Doctoror 4
  • Each GONE and VISIBLE causes more sections

    Each GONE and VISIBLE causes more sections

    I am switching the progress bar between GONE and VISIBLE and each time it reappears it seems to have more and more sections and possibly the speed is increasing. Is this a "feature"? :)

    P.S. The library was easy to integrate and override the default settings. Well done!

    bug 
    opened by pushbit 4
  • JCenter replacement

    JCenter replacement

    JCenter is getting shut down in May https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    So, please consider publishing to Maven Central. The deadline is May 1st.

    opened by meyyappanv 3
  • Always starts activated

    Always starts activated

    Here is my configuration:

    <style name="SVProgressBar" parent="SmoothProgressBar">
            <item name="spb_stroke_separator_length">12dp</item>
            <item name="spb_sections_count">2</item>
            <item name="spb_speed">1.2</item>
            <item name="spb_colors">@array/progressColors</item>
            <item name="spb_progressiveStart_speed">2</item>
            <item name="spb_progressiveStop_speed">4.4</item>
            <item name="spb_interpolator">spb_interpolator_acceleratedecelerate</item>
            <item name="spb_progressiveStart_activated">false</item>
        </style>
    
    <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
            android:id="@+id/progressBar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:indeterminate="true"
            app:layout_anchor="@+id/content_search" />
    

    it always starts activated. Device: android 7.1 emulator

    opened by guness 5
  • Added Circular pb Gradient option

    Added Circular pb Gradient option

    I have added code to the draw method of the DefaultDelegate that uses a SweepGradient and canvas rotations with values based on the current startAngle and sweepAngle to create a nice gradient effect IF the user sets the use_gradient attribute to “true”.

    opened by alex-android-sd 1
  • Doesn't stop if the delay between progressiveStart() and progressiveStop() is very short

    Doesn't stop if the delay between progressiveStart() and progressiveStop() is very short

    I don't have time to dig it, but in mUpdater there's a condition which is never satisfied and stop() isn't called:

    if (isFinishing()) {
            mFinishingOffset += (OFFSET_PER_FRAME * mProgressiveStopSpeed);
            mCurrentOffset += (OFFSET_PER_FRAME * mProgressiveStopSpeed);
            if (mFinishingOffset >= 1f) {
              stop();
            }
       ...
    
    opened by sevar83 3
  • Sometimes the progress bar stay shown

    Sometimes the progress bar stay shown

    I'm using the following setup:

            <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
                android:id="@+id/progress_bar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                app:spb_colors="@array/progress_color_table"
                app:spb_mirror_mode="false"
                app:spb_progressiveStart_speed="1.5"
                app:spb_progressiveStop_speed="3.5"
                app:spb_reversed="false"
                app:spb_sections_count="5"
                app:spb_speed="2.0"
                app:spb_stroke_separator_length="2dp"
                app:spb_stroke_width="4dp" />
    

    Programmatically i simply show and hide the bar like this:

            if (visible) {
                progress.progressiveStart();
            } else {
                progress.progressiveStop();
            }
    

    But under some circumstances the bar stays visible on the right side with a few pixels. Would be good what i can adjust to fix that behaviour.

    Thank you very much, Daniel

    opened by drindt 4
  • spb_progressiveStart_activated attribute is read twice

    spb_progressiveStart_activated attribute is read twice

    I was reading source code and found that spb_progressiveStart_activated is read twice in applyStyle:

    if (a.hasValue(R.styleable.SmoothProgressBar_spb_progressiveStart_activated)) {
      setProgressiveStartActivated(a.getBoolean(R.styleable.SmoothProgressBar_spb_progressiveStart_activated, false));
    }
    if (a.hasValue(R.styleable.SmoothProgressBar_spb_progressiveStart_activated)) {
      setProgressiveStartActivated(a.getBoolean(R.styleable.SmoothProgressBar_spb_progressiveStart_activated, false));
    }
    

    See this line

    May be it should be something else?

    bug 
    opened by marwinxxii 1
  • Angle and infinite bars (Indeterminate)

    Angle and infinite bars (Indeterminate)

    Please, add ability to set angle of bar. Example: 15 And infinite bars. For example, when sections count is not defined and bar width is defined, bars will repeat on all available width.

    opened by SuperCreeper 0
Releases(1.3.0)
Owner
Antoine Merle
android dev @deezer
Antoine Merle
A circular android ProgressBar library which extends View, and the usage same as ProgressBar, It has solid,line and solid_line three styles. Besides, progress value can be freely customized.

CircleProgressBar 中文版文档 The CircleProgressBar extends View, It has both solid and line two styles. Besides, progress value can be freely customized. I

dinus_developer 1.2k Jan 3, 2023
Customizable bouncing dots for smooth loading effect. Mostly used in chat bubbles to indicate the other person is typing.

LoadingDots for Android Customizable bouncing dots view for smooth loading effect. Mostly used in chat bubbles to indicate the other person is typing.

Eyal Biran 162 Dec 2, 2022
Android library to realize the various states and transitions in a ProgressBar.

StateProgressBar StateProgressBar is an Android library to realize the various states and transitions in a ProgressBar. Quick Start Get a feel of how

Kofi Gyan 1.5k Jan 9, 2023
An android library to display a progressbar that goes around an image.

android-square-progressbar First things first This library is setup to work with the Android Studio and Gradle. If you're using the Eclipse environmen

Yannick Signer 1.3k Nov 15, 2022
A beautiful, slim Android ProgressBar.

Android NumberProgressBar The NumberProgressBar is a bar, slim and sexy (every man wants! ). I decided to do this because I was really tired of androi

代码家 6k Jan 7, 2023
Some beautiful android loading drawable, can be combined with any view as the LoadingView or the ProgressBar. Besides, some Drawable can customize the loading progress too.

LoadingDrawable: Android cool animation collection 前言 CircleRotate源码解析 Fish源码解析 LoadingDrawable is some android animations implement of drawable: a li

dinus_developer 4.1k Dec 27, 2022
Android ProgressBar that "bends" under its own weight. Inspired by http://drbl.in/nwih

RopeProgressBar Android ProgressBar that "bends" under its own weight. Attributes Attribute Type Default Usage app:ropeMax integer 0 The max value of

Christian De Angelis 206 Dec 18, 2022
ArcProgressbar project let create Arc progressbar in android in simplest way.

Arc Progressbar In Android ArcProgressbar project let create Arc progressbar in android in simplest way. USAGE To make a Arc Progressbar add ArcProgre

Manish 40 Dec 11, 2022
Holo Circular ProgressBar

HoloCircularProgressBar What is HoloCircularProgressBar HoloCircularProgressBar is a Custom View implementation for Android you might know from the An

Pascal Welsch 957 Nov 15, 2022
MaterialLoadingProgressBar provide a styled ProgressBar which looks like SwipeRefreshLayout's loading indicator(support-v4 v21+)

MaterialLoadingProgressBar MaterialLoadingProgressBar provide a styled ProgressBar which looks like SwipeRefreshLayout's loading indicator(support-v4

lsjwzh 1.1k Nov 19, 2022
Progressbar with whorl style

WhorlView 一个加载View 预览 使用 step1 添加gradle配置 dependencies { compile 'com.tt:whorlviewlibrary:1.0.3' } step2 在xml中添加WhorlView <com.tt.whorlviewli

AndroidKy 409 Dec 3, 2022
Material Design ProgressBar with consistent appearance

MaterialProgressBar Material Design ProgressBar with consistent appearance on Android 4.0+. Why MaterialProgressBar? Consistent appearance on Android

Hai Zhang 2.2k Jan 1, 2023
A customizable, animated progress bar that features rounded corners. This Android library is designed to look great and be simple to use 🎉

RoundedProgressBar Easy, Beautiful, Customizeable The RoundedProgressBar library gives you a wide range of customizable options for making progress ba

null 541 Jan 1, 2023
Android library for showing progress in a highly customizable pie.

ProgressPieView Android library for showing progress in a highly customizable pie. Choose from the broad spectre of styleable elements: ppvStrokeWidth

Filip Puđak 399 Dec 29, 2022
PowerSpinner - 🌀 A lightweight dropdown popup spinner, fully customizable with an arrow and animations for Android.

PowerSpinner - ?? A lightweight dropdown popup spinner, fully customizable with an arrow and animations for Android.

Jaewoong Eum 881 Dec 30, 2022
A simple customizable NumberPicker plugin for Android

NumberPicker A simple customizable NumberPicker for Android. Installation via Gradle: compile 'com.github.travijuu:numberpicker:1.0.7' or Maven: <depe

Erkin Çakar 93 Nov 29, 2022
Completely customizable progress based loaders drawn using custom CGPaths written in Swift

FillableLoaders Completely customizable progress based loaders drawn using custom CGPaths written in Swift Waves Plain Spike Rounded Demo: Changelog:

Pol Quintana 2.1k Dec 31, 2022
Completely customizable progress based loaders drawn using custom CGPaths written in Swift

FillableLoaders Completely customizable progress based loaders drawn using custom CGPaths written in Swift Waves Plain Spike Rounded Demo: Changelog:

Pol Quintana 2.1k Dec 31, 2022
Beautiful progress bar with segments. Highly customizable. Fully written with Jetpack Compose

?? SegmentedProgressBar ?? Beautiful progress bar split into several segments. Highly customizable. Fully written with Jetpack Compose. Why this libra

Stephen Vinouze 90 Dec 15, 2022