{"id":13608076,"url":"https://github.com/agrawalsuneet/LoadersPack-Android","last_synced_at":"2025-04-12T14:31:55.789Z","repository":{"id":110871804,"uuid":"108691276","full_name":"agrawalsuneet/LoadersPack-Android","owner":"agrawalsuneet","description":"Android LoadersPack  - a replacement of default android material progressbar with different loaders","archived":false,"fork":false,"pushed_at":"2019-07-07T18:01:20.000Z","size":418,"stargazers_count":138,"open_issues_count":0,"forks_count":20,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-08T16:17:34.384Z","etag":null,"topics":["android","android-loader","android-loaders","clock","clock-loader","clockloader","java","kotlin","loader","loader-pack","loaders","loaderspack","ripple","ripple-effect","ripple-lib","ripplebutton","ripples","rippleview","rotatingcircularsticksloader","sticksloader"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agrawalsuneet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-10-28T23:24:16.000Z","updated_at":"2025-03-05T10:13:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f424676-fe1f-4de6-bb3e-a50992caa243","html_url":"https://github.com/agrawalsuneet/LoadersPack-Android","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrawalsuneet%2FLoadersPack-Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrawalsuneet%2FLoadersPack-Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrawalsuneet%2FLoadersPack-Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agrawalsuneet%2FLoadersPack-Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agrawalsuneet","download_url":"https://codeload.github.com/agrawalsuneet/LoadersPack-Android/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248198879,"owners_count":21063628,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-loader","android-loaders","clock","clock-loader","clockloader","java","kotlin","loader","loader-pack","loaders","loaderspack","ripple","ripple-effect","ripple-lib","ripplebutton","ripples","rippleview","rotatingcircularsticksloader","sticksloader"],"created_at":"2024-08-01T19:01:24.057Z","updated_at":"2025-04-12T14:31:55.294Z","avatar_url":"https://github.com/agrawalsuneet.png","language":"Kotlin","readme":"# LoadersPack\n\u003e Android Loaders\n\n\u003e A replacement of default android material progressbar with loaders\n\nlatest version : [ ![Download](https://api.bintray.com/packages/agrawalsuneet/androidlibs/loaderspack/images/download.svg) ](https://bintray.com/agrawalsuneet/androidlibs/loaderspack/_latestVersion)\n\n[![Android Arsenal]( https://img.shields.io/badge/Android%20Arsenal-LoadersPack-green.svg?style=flat )]( https://android-arsenal.com/details/1/7247 )\n\n![clockloader](https://user-images.githubusercontent.com/12999622/48309733-f524e300-e5a5-11e8-888b-fc6c07247723.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![rippleloader](https://user-images.githubusercontent.com/12999622/48309746-28677200-e5a6-11e8-8281-917af9a174cb.gif)\n\n\n![multiplerippleloader](https://user-images.githubusercontent.com/12999622/39401278-296a4180-4b39-11e8-8a8b-208edde9cc65.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![gaugeloader](https://user-images.githubusercontent.com/12999622/47268641-e8960780-d570-11e8-95cf-76ef886e104e.gif)\n\n\n![curvesloader](https://user-images.githubusercontent.com/12999622/45126558-d6e8d400-b16b-11e8-89bd-973e11a8e54e.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![ringandcircleloader](https://user-images.githubusercontent.com/12999622/45266388-59b2ad00-b452-11e8-9e51-28cdb5c538b3.gif)\n\n![arcprogressloader](https://user-images.githubusercontent.com/12999622/45809206-3fe05800-bce5-11e8-90ef-f68e46de64cc.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![fidgetloader](https://user-images.githubusercontent.com/12999622/45921114-dfac0a80-becc-11e8-8a1e-8c8d78c31dd4.gif)\n\n\n![wifiloader](https://user-images.githubusercontent.com/12999622/46253316-13230200-c496-11e8-80f9-358abe44bd34.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![searchloader](https://user-images.githubusercontent.com/12999622/48309628-66fc2d00-e5a4-11e8-9802-feee36a41e3d.gif)\n\n\n![pulseloader](https://user-images.githubusercontent.com/12999622/46934218-8b7fea80-d074-11e8-980e-70bdbb361f87.gif)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![RotatingCircularSticksLoader](https://user-images.githubusercontent.com/12999622/34488210-6dafe19e-efcf-11e7-9558-5740e1d0a42b.gif)\n\n\n![circularsticksloader](https://user-images.githubusercontent.com/12999622/34639868-0a358574-f2e0-11e7-8b10-10ce9c6f3a6e.gif)\n\n\nCheck all other loaders [here](https://agrawalsuneet.github.io/agrawalsuneet/opensourcecontribution/)\n\n## How To use\ninclude below dependency in build.gradle of application and compile it\n```\nimplementation 'com.agrawalsuneet.androidlibs:loaderspack:1.2.3'\n```\n\n\n### ClockLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.ClockLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:clock_animSpeedMultiplier=\"0.5\"\n        app:clock_bigCircleColor=\"@color/colorPrimary\"\n        app:clock_bigCircleRadius=\"80dp\"\n        app:clock_hourHandColor=\"@color/colorAccent\"\n        app:clock_hourHandLength=\"40dp\"\n        app:clock_innerCircleColor=\"@color/colorPrimaryDark\"\n        app:clock_innerCircleRadius=\"5dp\"\n        app:clock_minuteHandColor=\"@color/colorAccent\"\n        app:clock_minuteHandLength=\"60dp\"\n        app:clock_outerCircleBorderColor=\"@color/colorAccent\"\n        app:clock_outerCircleBorderWidth=\"10dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        var clock = ClockLoader(this)\n                .apply {\n                    outerCircleBorderWidth = 8.0f\n                    bigCircleRadius = 150.0f\n                    minuteHandLength = 120.0f\n                    hourHandLength = 80.0f\n                    innerCircleRadius = 15.0f\n\n                    outerCircleBorderColor = ContextCompat.getColor(context, R.color.colorAccent)\n                    bigCircleColor = ContextCompat.getColor(context, R.color.colorPrimary)\n                    innerCircleColor = ContextCompat.getColor(context, R.color.colorPrimaryDark)\n                    hourHandColor = ContextCompat.getColor(context, R.color.colorAccent)\n                    minuteHandColor = ContextCompat.getColor(context, R.color.colorAccent)\n\n                    animSpeedMultiplier = 2.0f\n                }\n\n\n        containerLayout.addView(clock)\n```\n\n* Java\n```\n        ClockLoader clockLoader = new ClockLoader(this);\n        clockLoader.setOuterCircleBorderWidth(8.0f);\n        clockLoader.setBigCircleRadius(150.0f);\n        clockLoader.setMinuteHandLength(120.0f);\n        clockLoader.setHourHandLength(80.0f);\n        clockLoader.setInnerCircleRadius(15.0f);\n        \n        clockLoader.setOuterCircleBorderColor(ContextCompat.getColor(this, R.color.colorAccent));\n        clockLoader.setBigCircleColor(ContextCompat.getColor(this, R.color.colorPrimary));\n        clockLoader.setInnerCircleColor(ContextCompat.getColor(this, R.color.colorPrimaryDark));\n        clockLoader.setHourHandColor(ContextCompat.getColor(this, R.color.colorAccent));\n        clockLoader.setMinuteHandColor(ContextCompat.getColor(this, R.color.colorAccent));\n        \n        clockLoader.setAnimSpeedMultiplier(2.0f);\n        \n        container.addView(clockLoader);\n```\n\n\n### RippleLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.RippleLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:ripple_animDuration=\"500\"\n        app:ripple_circleColor=\"@color/blue\"\n        app:ripple_circleInitialRadius=\"50dp\"\n        app:ripple_fromAlpha=\"1.0\"\n        app:ripple_interpolator=\"@android:anim/decelerate_interpolator\"\n        app:ripple_startLoadingDefault=\"true\"\n        app:ripple_toAplha=\"0.01\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val ripple = RippleLoader(baseContext).apply {\n            circleInitialRadius = 80\n            circleColor = resources.getColor(R.color.black)\n            fromAlpha = 1.0f\n            toAlpha = 0f\n            animationDuration = 1000\n            interpolator = DecelerateInterpolator()\n        }\n\n\n        containerLayout.addView(ripple)\n```\n\n* Java\n```\n        RippleLoader ripple = new RippleLoader(this);\n        ripple.setCircleInitialRadius(80);\n        ripple.setCircleColor(getResources().getColor(R.color.red));\n        ripple.setFromAlpha(1.0f);\n        ripple.setToAlpha(0.01f);\n        ripple.setAnimationDuration(1000);\n        ripple.setInterpolator(new DecelerateInterpolator());\n        ripple.setStartLoadingDefault(true);\n        \n        container.addView(ripple);\n```\n\n\n### MultipleRippleLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.MultipleRippleLoader\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            app:multipleripple_animDuration=\"6000\"\n            app:multipleripple_circleColor=\"@color/green\"\n            app:multipleripple_circleInitialRadius=\"20dp\"\n            app:multipleripple_fromAlpha=\"0.8\"\n            app:multipleripple_interpolator=\"@android:anim/decelerate_interpolator\"\n            app:multipleripple_noOfRipples=\"3\"\n            app:multipleripple_toAplha=\"0.1\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val multipleRippleLoader = MultipleRippleLoader(this,\n                        40, \n                        ContextCompat.getColor(this, R.color.blue), \n                        2)\n                        .apply {\n                            fromAlpha = 0.9f\n                            toAlpha = 0.2f\n                            animationDuration = 2000\n                            interpolator = LinearInterpolator()\n                        }\n        \n                containerLayout.addView(multipleRippleLoader)\n```\n\n* Java\n```\n        MultipleRippleLoader multipleRippleLoader = new MultipleRippleLoader(this,\n                        40,\n                        ContextCompat.getColor(this, R.color.blue),\n                        2);\n        \n                multipleRippleLoader.setFromAlpha(0.9f);\n                multipleRippleLoader.setToAlpha(0.2f);\n                multipleRippleLoader.setAnimationDuration(2000);\n                multipleRippleLoader.setInterpolator(new LinearInterpolator());\n        \n        \n                container.addView(multipleRippleLoader);\n```\n\n\n### GaugeLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.GaugeLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:gauge_defaultStartLoading=\"true\"\n        app:gauge_higherRangeColor=\"@color/blue_selected\"\n        app:gauge_lowerRangeColor=\"@color/blue_delfault\"\n        app:gauge_needleColor=\"@android:color/holo_orange_dark\"\n        app:gauge_needleJointRadius=\"20dp\"\n        app:gauge_needleWidth=\"8dp\"\n        app:gauge_rangeIndicatorRadius=\"60dp\"\n        app:gauge_rangeIndicatorWidth=\"40dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val gaugeLoader = GaugeLoader(this, 150, 80,\n                        20, 50,\n                        ContextCompat.getColor(this, R.color.blue_delfault),\n                        ContextCompat.getColor(this, R.color.blue_selected),\n                        ContextCompat.getColor(this, android.R.color.black), true)\n                        \n        containerLayout.addView(gaugeLoader)\n        \n        //or you can provide custom rotate animation for needle\n        \n        val gaugeLoader = GaugeLoader(this, 150, 80,\n                        20, 50,\n                        ContextCompat.getColor(this, R.color.blue_delfault),\n                        ContextCompat.getColor(this, R.color.blue_selected),\n                        ContextCompat.getColor(this, android.R.color.black), false)\n        \n        Handler().postDelayed({\n            val anim = RotateAnimation(270.0f, 450.0f, gaugeLoader.needlePivotX, gaugeLoader.needlePivotY)\n            anim.duration = 1000\n            anim.interpolator = LinearInterpolator()\n            anim.repeatMode = Animation.REVERSE\n            anim.repeatCount = Animation.INFINITE\n            gaugeLoader.startLoading(anim)\n        }, 500)\n        \n        //delay because view will not be initialized\n        \n        containerLayout.addView(gaugeLoader)\n```\n\n* Java\n```\n        GaugeLoader gaugeLoader = new GaugeLoader(this, 150, 80,\n                        20, 50,\n                        ContextCompat.getColor(this, R.color.blue_delfault),\n                        ContextCompat.getColor(this, R.color.blue_selected),\n                        ContextCompat.getColor(this, android.R.color.black), true);\n        \n        container.addView(gaugeLoader);\n\n        //or you can provide custom rotate animation for needle\n                \n       final GaugeLoader gaugeLoader = new GaugeLoader(this, 150, 80,\n                       20, 50,\n                       ContextCompat.getColor(this, R.color.blue_delfault),\n                       ContextCompat.getColor(this, R.color.blue_selected),\n                       ContextCompat.getColor(this, android.R.color.black), false);\n       \n               new Handler().postDelayed(new Runnable() {\n                   @Override\n                   public void run() {\n                       RotateAnimation anim = new RotateAnimation(270.0f, 450.0f,\n                               gaugeLoader.getNeedlePivotX(), gaugeLoader.getNeedlePivotY());\n                       anim.setDuration(1000);\n                       anim.setInterpolator(new LinearInterpolator());\n                       anim.setRepeatMode(Animation.REVERSE);\n                       anim.setRepeatCount(Animation.INFINITE);\n                       gaugeLoader.startLoading(anim);\n                   }\n               }, 500);\n       \n       //delay because view will not be initialized\n\n       container.addView(gaugeLoader);         \n```\n\n\n\n\n### CurvesLoaders\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.CurvesLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:curves_animDuration=\"1000\"\n        app:curves_curveColor=\"@color/blue_selected\"\n        app:curves_curveSweepAngle=\"160\"\n        app:curves_curveWidth=\"5dp\"\n        app:curves_distanceBetweenCurves=\"5dp\"\n        app:curves_interpolator=\"@android:anim/linear_interpolator\"\n        app:curves_noOfCurves=\"5\"\n        app:curves_outermostCurveRadius=\"80dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val curvesLoader = CurvesLoader(\n                        this,\n                        4,\n                        100,\n                        10,\n                        10,\n                        160.0f,\n                        ContextCompat.getColor(this, R.color.blue_selected))\n                        .apply {\n                            animDuration = 1000\n                            interpolator = LinearInterpolator()\n                        }\n\n                containerLayout.addView(curvesLoader)\n```\n\n* Java\n```\n        CurvesLoader curvesLoader = new CurvesLoader(\n                        this,\n                        4,\n                        100,\n                        10,\n                        10,\n                        160.0f,\n                        ContextCompat.getColor(this, R.color.blue_selected));\n\n\n                curvesLoader.setAnimDuration(1000);\n                curvesLoader.setInterpolator(new LinearInterpolator());\n\n                container.addView(curvesLoader);\n```\n\n\n### RingAndCircleLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.RingAndCircleLoader\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"g\n            app:ringandcircle_animDuration=\"800\"\n            app:ringandcircle_circleColor=\"@color/green\"\n            app:ringandcircle_circleRadius=\"6dp\"\n            app:ringandcircle_ringColor=\"@color/green_default\"\n            app:ringandcircle_ringRadius=\"20dp\"\n            app:ringandcircle_ringWidth=\"4dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val ringAndCircleLoader = RingAndCircleLoader(\n                        this,\n                        20,\n                        100,\n                        10,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, R.color.blue_delfault))\n                        .apply {\n                            animDuration = 1000\n                        }\n\n                containerLayout.addView(ringAndCircleLoader)\n```\n\n* Java\n```\n        RingAndCircleLoader ringAndCircleLoader = new RingAndCircleLoader(\n                        this,\n                        20,\n                        100,\n                        10,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, R.color.blue_delfault));\n\n                ringAndCircleLoader.setAnimDuration(1000);\n\n                container.addView(ringAndCircleLoader);\n```\n\n\n### ArcProgressLoader\n```\n\u003carray name=\"colors_rgb\"\u003e\n        \u003citem\u003e@color/red\u003c/item\u003e\n        \u003citem\u003e@color/amber\u003c/item\u003e\n        \u003citem\u003e@color/green\u003c/item\u003e\n        \u003citem\u003e@color/grey\u003c/item\u003e\n    \u003c/array\u003e\n```\n\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.ArcProgressLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:arcprogress_arcColorsArray=\"@array/colors_rgb\"\n        app:arcprogress_arcRadius=\"60dp\"\n        app:arcprogress_arcWidth=\"8dp\"\n        app:arcprogress_incrementalAngle=\"7.0\"\n        app:arcprogress_maxArcAngle=\"220.0\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n         val arcProgressLoader = ArcProgressLoader(this,\n                        120, 20,\n                        10.0f, 180.0f,\n                        resources.getIntArray(R.array.colors_rgb))\n\n                containerLayout.addView(arcProgressLoader)\n```\n\n* Java\n```\n        ArcProgressLoader arcProgressLoader = new ArcProgressLoader(this,\n                        120, 20,\n                        10.0f, 180.0f,\n                        getResources().getIntArray(R.array.colors_rgb));\n\n                container.addView(arcProgressLoader);\n```\n\n\n### FidgetLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.FidgetLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:fidget_animDuration=\"3000\"\n        app:fidget_bodyColor=\"@color/blue_selected\"\n        app:fidget_fidgetRadius=\"30dp\"\n        app:fidget_interpolator=\"@android:anim/accelerate_decelerate_interpolator\"\n        app:fidget_noOfRotation=\"10\"\n        app:fidget_sideCirclesColor=\"@android:color/darker_gray\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n         val fidgetLoader = FidgetLoader(this,\n                         20,\n                         ContextCompat.getColor(this, R.color.blue_selected),\n                         ContextCompat.getColor(this, R.color.amber))\n                         .apply {\n                             animDuration = 3000\n                             noOfRotation = 1\n                             interpolator = BounceInterpolator()\n                         }\n\n                 containerLayout.addView(fidgetLoader)\n```\n\n* Java\n```\n        FidgetLoader fidgetLoader = new FidgetLoader(this,\n                        20,\n                        ContextCompat.getColor(this, R.color.blue_selected),\n                        ContextCompat.getColor(this, R.color.amber));\n\n                fidgetLoader.setAnimDuration(3000);\n                fidgetLoader.setNoOfRotation(1);\n                fidgetLoader.setInterpolator(new BounceInterpolator());\n\n                container.addView(fidgetLoader);\n```\n\n\n### WifiLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.WifiLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_margin=\"16dp\"\n        app:wifi_centerCircleRadius=\"6dp\"\n        app:wifi_incrementalAngle=\"1.0\"\n        app:wifi_wifiColor=\"@color/blue_selected\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n         val wifiLoader = WifiLoader(this,\n                         20,\n                         ContextCompat.getColor(this, R.color.blue_selected))\n                         .apply {\n                             incrementalAngle = 2.0f\n                         }\n\n                 containerLayout.addView(wifiLoader)\n```\n\n* Java\n```\n        WifiLoader wifiLoader = new WifiLoader(this,\n                        20,\n                        ContextCompat.getColor(this, R.color.blue_selected));\n\n                wifiLoader.setIncrementalAngle(1.2f);\n\n                container.addView(wifiLoader);\n```\n\n\n### SearchLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.SearchLoader\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            app:search_defaultStartLoading=\"true\"\n            app:search_lensBorderWidth=\"6dp\"\n            app:search_lensColor=\"@color/blue_selected\"\n            app:search_lensHandleLength=\"20dp\"\n            app:search_lensRadius=\"18dp\"\n            app:search_xRangeToSearch=\"140dp\"\n            app:search_yRangeToSearch=\"140dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n         val searchLoader = SearchLoader(this,\n                         60, 20, 80,\n                         ContextCompat.getColor(this, R.color.red),\n                         500, 500, true)\n\n                 containerLayout.addView(searchLoader)\n```\n\n* Java\n```\n        SearchLoader searchLoader = new SearchLoader(this,\n                        60, 20, 80,\n                        ContextCompat.getColor(this, R.color.red),\n                        500, 500, true);\n\n                container.addView(searchLoader);\n```\n\n\n\n### PulseLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.PulseLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:pulse_LineThickness=\"6dp\"\n        app:pulse_normalIncrementalValue=\"4.0\"\n        app:pulse_pulseColor=\"@color/blue_selected\"\n        app:pulse_pulseIncrementalValue=\"20.0\"\n        app:pulse_sideLength=\"100dp\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val pulseLoader = PulseLoader(this,\n                        15,\n                        400,\n                        4.0f,\n                        15.0f,\n                        ContextCompat.getColor(this, R.color.blue_selected))\n\n                containerLayout.addView(pulseLoader)\n```\n\n* Java\n```\n        PulseLoader pulseLoader = new PulseLoader(this,\n                        15,\n                        400,\n                        4.0f,\n                        15.0f,\n                        ContextCompat.getColor(this, R.color.blue_selected));\n\n                container.addView(pulseLoader);\n```\n\n\n### RotatingCircularSticksLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.RotatingCircularSticksLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:rotatingsticks_noOfSticks=\"50\"\n        app:rotatingsticks_innerCircleRadius=\"15dp\"\n        app:rotatingsticks_outerCircleRadius=\"30dp\"\n        app:rotatingsticks_stickColor=\"@color/grey\"\n        app:rotatingsticks_viewBackgroundColor=\"@color/white\"\n        app:rotatingsticks_animDuration=\"5000\"/\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val loader = RotatingCircularSticksLoader(this, 16, 100f, 50f,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, android.R.color.white))\n                        .apply {\n                            animDuration = 5000\n                        }\n        \n                containerLayout.addView(loader)\n```\n\n* Java\n```\n        RotatingCircularSticksLoader loader = new RotatingCircularSticksLoader(this,\n                        16, 100f, 50f,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, android.R.color.white));\n        \n                loader.setAnimDuration(5000);\n                container.addView(loader);\n```\n\n\n### CircularSticksLoader\n##### Through XML\n```\n\u003ccom.agrawalsuneet.loaderspack.loaders.CircularSticksLoader\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_margin=\"16dp\"\n        app:circularsticks_animDuration=\"100\"\n        app:circularsticks_firstShadowColor=\"#aa000000\"\n        app:circularsticks_innerCircleRadius=\"50dp\"\n        app:circularsticks_noOfSticks=\"32\"\n        app:circularsticks_outerCircleRadius=\"80dp\"\n        app:circularsticks_secondShadowColor=\"#77000000\"\n        app:circularsticks_selectedStickColor=\"@color/black\"\n        app:circularsticks_showRunningShadow=\"true\"\n        app:circularsticks_stickColor=\"@color/grey\"\n        app:circularsticks_viewBackgroundColor=\"@color/white\" /\u003e\n```\n##### Through Code\n* Kotlin\n```\n        val loader = CircularSticksLoader(this, 16, 200f, 100f,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, R.color.red),\n                        ContextCompat.getColor(this, android.R.color.white))\n                        .apply {\n                            showRunningShadow = true\n                            firstShadowColor = ContextCompat.getColor(context, R.color.green)\n                            secondShadowColor = ContextCompat.getColor(context, R.color.yellow)\n                            animDuration = 100\n                        }\n        \n                containerLayout.addView(loader)\n```\n\n* Java\n```\n        CircularSticksLoader loader = new CircularSticksLoader(this, 16,\n                        200f, 100f,\n                        ContextCompat.getColor(this, R.color.blue),\n                        ContextCompat.getColor(this, R.color.red),\n                        ContextCompat.getColor(this, android.R.color.white));\n        \n                loader.setShowRunningShadow(true);\n                loader.setFirstShadowColor(ContextCompat.getColor(this, R.color.green));\n                loader.setSecondShadowColor(ContextCompat.getColor(this, R.color.yellow));\n                loader.setAnimDuration(100);\n        \n                container.addView(loader);\n```\n\n\nFeel free to drop an email at agrawalsuneet@gmail.com if face any issue or require any additional functionality in it.\n```\nCopyright 2018 Suneet Agrawal\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrawalsuneet%2FLoadersPack-Android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagrawalsuneet%2FLoadersPack-Android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagrawalsuneet%2FLoadersPack-Android/lists"}