{"id":15026570,"url":"https://github.com/akexorcist/roundcornerprogressbar","last_synced_at":"2025-12-16T22:57:09.425Z","repository":{"id":25260041,"uuid":"28685195","full_name":"akexorcist/RoundCornerProgressBar","owner":"akexorcist","description":"[Android] Round Corner Progress Bar Library for Android","archived":false,"fork":false,"pushed_at":"2023-11-19T11:14:43.000Z","size":3289,"stargazers_count":2543,"open_issues_count":10,"forks_count":371,"subscribers_count":67,"default_branch":"main","last_synced_at":"2025-05-15T06:07:45.178Z","etag":null,"topics":["android","android-library","java","kotlin"],"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/akexorcist.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-01-01T11:10:21.000Z","updated_at":"2025-05-14T03:24:13.000Z","dependencies_parsed_at":"2024-05-03T15:36:44.858Z","dependency_job_id":null,"html_url":"https://github.com/akexorcist/RoundCornerProgressBar","commit_stats":null,"previous_names":["akexorcist/android-roundcornerprogressbar"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akexorcist%2FRoundCornerProgressBar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akexorcist%2FRoundCornerProgressBar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akexorcist%2FRoundCornerProgressBar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akexorcist%2FRoundCornerProgressBar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akexorcist","download_url":"https://codeload.github.com/akexorcist/RoundCornerProgressBar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254283350,"owners_count":22045141,"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-library","java","kotlin"],"created_at":"2024-09-24T20:04:42.906Z","updated_at":"2025-12-16T22:57:09.411Z","avatar_url":"https://github.com/akexorcist.png","language":"Kotlin","readme":"![Android Kotlin](https://img.shields.io/badge/Android-Kotlin-6C3FD1.svg?style=flat\u0026logo=android)\n![Minimum SDK Version](https://img.shields.io/badge/API-17+-brightgreen)\n[![Maven Central](https://img.shields.io/maven-central/v/com.akexorcist/round-corner-progress-bar?color=brightgreen\u0026label=Maven%20Central)](https://search.maven.org/artifact/com.akexorcist/round-corner-progress-bar)\n![Apache 2.0](https://img.shields.io/badge/License-Apache%202-brightgreen)\n[![Workflow Status](https://github.com/akexorcist/RoundCornerProgressBar/actions/workflows/android.yml/badge.svg)](https://github.com/akexorcist/RoundCornerProgressBar/actions)\n\n[![Google Dev Library](https://img.shields.io/badge/Google%20Dev%20Library-Round%20Corner%20Progress%20Bar-blue.svg?style=flat)](https://devlibrary.withgoogle.com/products/android/repos/akexorcist-RoundCornerProgressBar)\n[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Round%20Corner%20Progress%20Bar-blue.svg?style=flat)](http://android-arsenal.com/details/1/1375)\n\n# RoundCornerProgressBar\n\nRound corner is cool. Let's make your progress bar with round corner\n\n![Round Corner Progress Bar Sample](/image/header.jpg)\n\nColorful rounded corner progress bar\n\n# Download\n\n## Gradle\n\n```kotlin\nimplementation(\"com.akexorcist:round-corner-progress-bar:2.2.2\")\n```\n\n```groovy\nimplementation 'com.akexorcist:round-corner-progress-bar:2.2.2'\n```\n\n## Demo\n\nGo to [Google Play](https://play.google.com/store/apps/details?id=com.akexorcist.roundcornerprogressbar) to download the demo app\n\n# Overview\n\n### Round Corner Progress Bar\n\nSimple round corner progress bar\n\n![Round Corner Progress Bar](/image/overview_simple.jpg)\n\n### CenteredRoundCornerProgressBar\n\nRound corner progress bar with progress expands from the center\n\n![Centered Round Corner Progress Bar](/image/overview_centered.jpg)\n\n### Icon Round Corner Progress Bar\n\nRound corner progress bar with heading icon\n\n![Icon Round Corner Progress Bar](/image/overview_icon.jpg)\n\n### TextRoundCornerProgressBar\n\nRound corner progress bar with text inside the progress\n\n![Icon Round Corner Progress Bar](/image/overview_text.jpg)\n\n### IndeterminateRoundCornerProgressBar and IndeterminateCenteredRoundCornerProgressBar\n\nSimple round corner progress bar and centered round corner progress bar with indeterminate animation\n\n![Indeterminate Round Corner Progress Bar and Indeterminate Centered Round Corner Progress Bar](/image/overview_indeterminate.gif)\n\n# Feature\n\n### Standard Features\n\n- Primary progress and secondary progress supported\n- Primary progress, secondary progress and progress background color are customizable\n- Customize your own progress background padding\n- Customize your own progress's corner radius\n- Reversing progress bar supported\n- Progress bar with gradient color? Yes!\n- Progress change animation? Absolutely yes!\n\n### Component Features\n\n- Progress expanding from center with `CenteredRoundCornerProgressBar`\n- Heading icon supported with `IconRoundCornerProgressBar`\n- Text inside progress supported with `TextRoundCornerProgressBar`\n- Indeterminate animation supported with `IndeterminateRoundCornerProgressBar` or `IndeterminateCenteredRoundCornerProgressBar`\n\n# Usage\n\nFor using custom attribute of progress bar, define 'app' namespace as root view attribute in your layout\n\n```xml\nxmlns:app=\"http://schemas.android.com/apk/res-auto\"\n```\n\n## RoundCornerProgressBar\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.IconRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"30dp\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcBackgroundPadding=\"2dp\"\n    app:rcMax=\"100\"\n    app:rcProgress=\"40\"\n    app:rcProgressColor=\"#EF5350\"\n    app:rcRadius=\"10dp\"\n    app:rcSecondaryProgress=\"60\"\n    app:rcSecondaryProgressColor=\"#40EF5350\" /\u003e\n```\n\n![Round Corner Progress Bar](/image/sample_simple.jpg)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.RoundCornerProgressBar\n    app:rcProgress=\"float\"\n    app:rcSecondaryProgress=\"float\"\n    app:rcMax=\"float\"\n    app:rcRadius=\"dimension\"\n    app:rcBackgroundPadding=\"dimension\"\n    app:rcReverse=\"boolean\"\n    app:rcProgressColor=\"color\"\n    app:rcSecondaryProgressColor=\"color\"\n    app:rcBackgroundColor=\"color\"\n    app:rcAnimationEnable=\"boolean\"\n    app:rcAnimationSpeedScale=\"float\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Progress\nfun getMax(): Float\nfun setMax(max: Float)\nfun setMax(max: Int)\nfun getProgress(): Float\nfun setProgress(progress: Int)\nfun setProgress(progress: Float)\nfun getSecondaryProgress(): Float\nfun setSecondaryProgress(secondaryProgress: Int)\nfun setSecondaryProgress(secondaryProgress: Float)\n\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\n\n// Animation\nfun enableAnimation()\nfun disableAnimation()\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\nfun isProgressAnimating(): Boolean\nfun isSecondaryProgressAnimating(): Boolean\n\n// Reversing Progress\nfun isReverse(): Boolean\nfun setReverse(isReverse: Boolean)\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\n\n// Listener\nfun setOnProgressChangedListener(listener: OnProgressChangedListener)\n```\n\n## CenteredRoundCornerProgressBar\n\nSame as RoundCornerProgressBar but reversing does not supported.\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.CenteredRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"30dp\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcBackgroundPadding=\"2dp\"\n    app:rcMax=\"100\"\n    app:rcProgress=\"40\"\n    app:rcProgressColor=\"#EF5350\"\n    app:rcRadius=\"10dp\"/\u003e\n```\n\n![Centerd Round Corner Progress Bar](/image/sample_centered.jpg)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.CenteredRoundCornerProgressBar\n    app:rcProgress=\"float\"\n    app:rcSecondaryProgress=\"float\"\n    app:rcMax=\"float\"\n    app:rcRadius=\"dimension\"\n    app:rcBackgroundPadding=\"dimension\"\n    app:rcProgressColor=\"color\"\n    app:rcSecondaryProgressColor=\"color\"\n    app:rcBackgroundColor=\"color\"\n    app:rcAnimationEnable=\"boolean\"\n    app:rcAnimationSpeedScale=\"float\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Progress\nfun getMax(): Float\nfun setMax(max: Float)\nfun setMax(max: Int)\nfun getProgress(): Float\nfun setProgress(progress: Int)\nfun setProgress(progress: Float)\nfun getSecondaryProgress(): Float\nfun setSecondaryProgress(secondaryProgress: Int)\nfun setSecondaryProgress(secondaryProgress: Float)\n\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\n\n// Animation\nfun enableAnimation()\nfun disableAnimation()\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\nfun isProgressAnimating(): Boolean\nfun isSecondaryProgressAnimating(): Boolean\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\n\n// Listener\nfun setOnProgressChangedListener(listener: OnProgressChangedListener)\n```\n\n## IconRoundCornerProgressBar\n\nIcon size is required for this progress bar. Use `wrap_content` for `layout_height` is recommended.\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.IconRoundCornerProgressBar\n        android:layout_height=\"wrap_content\"\n        app:rcIconSize=\"40dp\"\n        ... /\u003e\n```\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.IconRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"wrap_content\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcBackgroundPadding=\"2dp\"\n    app:rcIconBackgroundColor=\"#00796B\"\n    app:rcIconPadding=\"5dp\"\n    app:rcIconSize=\"40dp\"\n    app:rcIconSrc=\"@drawable/ic_android\"\n    app:rcMax=\"150\"\n    app:rcProgress=\"90\"\n    app:rcProgressColor=\"#EF5350\"\n    app:rcRadius=\"5dp\"\n    app:rcReverse=\"true\" /\u003e\n```\n\n![Icon Round Corner Progress Bar](/image/sample_icon.jpg)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.IconRoundCornerProgressBar\n        app:rcProgress=\"float\"\n        app:rcSecondaryProgress=\"float\"\n        app:rcMax=\"float\"\n        app:rcRadius=\"dimension\"\n        app:rcBackgroundPadding=\"dimension\"\n        app:rcReverse=\"boolean\"\n        app:rcProgressColor=\"color\"\n        app:rcSecondaryProgressColor=\"color\"\n        app:rcBackgroundColor=\"color\"\n        app:rcAnimationEnable=\"boolean\"\n        app:rcAnimationSpeedScale=\"float\"\n        app:rcIconSrc=\"reference\"\n        app:rcIconSize=\"dimension\"\n        app:rcIconWidth=\"dimension\"\n        app:rcIconHeight=\"dimension\"\n        app:rcIconPadding=\"dimension\"\n        app:rcIconPaddingLeft=\"dimension\"\n        app:rcIconPaddingRight=\"dimension\"\n        app:rcIconPaddingTop=\"dimension\"\n        app:rcIconPaddingBottom=\"dimension\"\n        app:rcIconBackgroundColor=\"color\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Progress\nfun getMax(): Float\nfun setMax(max: Float)\nfun setMax(max: Int)\nfun getProgress(): Float\nfun setProgress(progress: Int)\nfun setProgress(progress: Float)\nfun getSecondaryProgress(): Float\nfun setSecondaryProgress(secondaryProgress: Int)\nfun setSecondaryProgress(secondaryProgress: Float)\n\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\n\nfun getIconSize(): Int\nfun setIconSize(size: Int)\nfun getIconPadding(): Int\nfun setIconPadding(padding: Int)\nfun getIconPaddingLeft(): Int\nfun setIconPaddingLeft(padding: Int)\nfun getIconPaddingTop(): Int\nfun setIconPaddingTop(padding: Int)\nfun getIconPaddingRight(): Int\nfun setIconPaddingRight(padding: Int)\nfun getIconPaddingBottom(): Int\nfun setIconPaddingBottom(padding: Int)\n\n// Animation\nfun enableAnimation()\nfun disableAnimation()\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\nfun isProgressAnimating(): Boolean\nfun isSecondaryProgressAnimating(): Boolean\n\n// Reversing Progress\nfun isReverse(): Boolean\nfun setReverse(isReverse: Boolean)\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\nfun getColorIconBackground(): Int\nfun setIconBackgroundColor(color: Int)\n\n// Icon\nfun getIconImageResource(): Int\nfun setIconImageResource(resId: Int)\nfun getIconImageBitmap(): Birmap\nfun setIconImageBitmap(bitmap: Bitmap)\nfun getIconImageDrawable(): Drawable\nfun setIconImageDrawable(drawable: Drawable)\n\n// Listener\nfun setOnProgressChangedListener(listener: OnProgressChangedListener)\nfun setOnIconClickListener(listener: OnIconClickListener)\n```\n\n## TextRoundCornerProgressBar\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.TextRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"30dp\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcBackgroundPadding=\"2dp\"\n    app:rcMax=\"100\"\n    app:rcProgress=\"40\"\n    app:rcProgressColor=\"#EF5350\"\n    app:rcRadius=\"80dp\"\n    app:rcReverse=\"true\"\n    app:rcSecondaryProgress=\"60\"\n    app:rcSecondaryProgressColor=\"#40009688\"\n    app:rcTextPositionPriority=\"outside\"\n    app:rcTextProgress=\"40\"\n    app:rcTextProgressColor=\"#111111\" /\u003e\n```\n\n![Text Round Corner Progress Bar](/image/sample_text.jpg)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.TextRoundCornerProgressBar\n        app:rcProgress=\"float\"\n        app:rcSecondaryProgress=\"float\"\n        app:rcMax=\"float\"\n        app:rcRadius=\"dimension\"\n        app:rcBackgroundPadding=\"dimension\"\n        app:rcReverse=\"boolean\"\n        app:rcProgressColor=\"color\"\n        app:rcSecondaryProgressColor=\"color\"\n        app:rcBackgroundColor=\"color\"\n        app:rcAnimationEnable=\"boolean\"\n        app:rcAnimationSpeedScale=\"float\"\n        app:rcTextProgressColor=\"color\"\n        app:rcTextProgressSize=\"dimension\"\n        app:rcTextProgressMargin=\"dimension\"\n        app:rcTextProgress=\"String\"\n        app:rcTextInsideGravity=\"start|end\"\n        app:rcTextOutsideGravity=\"start|end\"\n        app:rcTextPositionPriority=\"inside|outside\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Progress\nfun getMax(): Float\nfun setMax(max: Float)\nfun setMax(max: Int)\nfun getProgress(): Float\nfun setProgress(progress: Int)\nfun setProgress(progress: Float)\nfun getSecondaryProgress(): Float\nfun setSecondaryProgress(secondaryProgress: Int)\nfun setSecondaryProgress(secondaryProgress: Float)\n\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\nfun getTextProgressSize(): Int\nfun setTextProgressSize(size: Int)\nfun getTextProgressMargin(): Int\nfun setTextProgressMargin(margin: Int)\n\n// Animation\nfun enableAnimation()\nfun disableAnimation()\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\nfun isProgressAnimating(): Boolean\nfun isSecondaryProgressAnimating(): Boolean\n\n// Reversing Progress\nfun isReverse(): Boolean\nfun setReverse(isReverse: Boolean)\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\nfun getTextProgressColor(): Int\nfun setTextProgressColor(color: Int)\n\n// Text\nfun getProgressText(): String\nfun setProgressText(text: String)\n\n// Position\nfun getTextPositionPriority(): Int\nfun setTextPositionPriority(priority: Int)\nfun getTextInsideGravity(): Int\nfun setTextInsideGravity(gravity: Int)\nfun getTextOutsideGravity(): Int\nfun setTextOutsideGravity(gravity: Int)\n\n// Listener\nfun setOnProgressChangedListener(listener: OnProgressChangedListener)\n```\n\n## IndeterminateRoundCornerProgressBar\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.indeterminate.IndeterminateRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"10dp\"\n    app:rcAnimationSpeedScale=\"3\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcProgressColor=\"#EF5350\" /\u003e\n```\n\n![Indeterminate Round Corner Progress Bar](/image/sample_indeterminate.gif)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.indeterminate.IndeterminateRoundCornerProgressBar\n        app:rcRadius=\"dimension\"\n        app:rcBackgroundPadding=\"dimension\"\n        app:rcReverse=\"boolean\"\n        app:rcProgressColor=\"color\"\n        app:rcSecondaryProgressColor=\"color\"\n        app:rcBackgroundColor=\"color\"\n        app:rcAnimationSpeedScale=\"float\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\n\n// Animation\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\n\n// Reversing Progress\nfun isReverse(): Boolean\nfun setReverse(isReverse: Boolean)\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\n```\n\n## IndeterminateCenteredRoundCornerProgressBar\n\nSame as IndeterminateRoundCornerProgressBar\n\n### Example\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.indeterminate.IndeterminateCenteredRoundCornerProgressBar\n    android:layout_width=\"260dp\"\n    android:layout_height=\"10dp\"\n    app:rcAnimationSpeedScale=\"0.75\"\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcProgressColor=\"#EF5350\" /\u003e\n```\n\n![Indeterminate Centered Round Corner Progress Bar](/image/sample_indeterminate_centered.gif)\n\n### Layout XML\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.IndeterminateCenteredRoundCornerProgressBar\n        app:rcRadius=\"dimension\"\n        app:rcBackgroundPadding=\"dimension\"\n        app:rcReverse=\"boolean\"\n        app:rcProgressColor=\"color\"\n        app:rcSecondaryProgressColor=\"color\"\n        app:rcBackgroundColor=\"color\"\n        app:rcAnimationSpeedScale=\"float\" /\u003e\n```\n\n### Public Methods\n\n```kotlin\n// Dimension\nfun getRadius(): Int\nfun setRadius(radius: Int)\nfun getPadding(): Int\nfun setPadding(padding: Int)\nfun getLayoutWidth(): Float\n\n// Animation\nfun getAnimationSpeedScale(): Float\nfun setAnimationSpeedScale(scale: Float)\n\n// Reversing Progress\nfun isReverse(): Boolean\nfun setReverse(isReverse: Boolean)\n\n// Color\nfun getProgressBackgroundColor(): Int\nfun setProgressBackgroundColor(color: Int)\nfun getProgressColor(): Int\nfun setProgressColor(color: Int)\nfun getProgressColors(): List\u003cInt\u003e\nfun setProgressColors(colors: List\u003cInt\u003e)\nfun getSecondaryProgressColor(): Int\nfun setSecondaryProgressColor(color: Int)\nfun getSecondaryProgressColors(): List\u003cInt\u003e\nfun setSecondaryProgressColors(colors: List\u003cInt\u003e)\n```\n\n## Apply Gradient Progress Bar Color\n\nGradient color for progress bar must be in int array resource. At least 2 colors.\n\n```xml\n\u003c!-- Color Resource --\u003e\n\u003cresources\u003e\n    \u003carray name=\"sample_progress_gradient\"\u003e\n        \u003citem\u003e#009688\u003c/item\u003e\n        \u003citem\u003e#80CBC4\u003c/item\u003e\n    \u003c/array\u003e\n\u003c/resources\u003e\n\n\u003c!-- Layout --\u003e\n\u003ccom.akexorcist.roundcornerprogressbar.RoundCornerProgressBar\n    ...\n    app:rcBackgroundColor=\"#0A000000\"\n    app:rcBackgroundPadding=\"4dp\"\n    app:rcMax=\"100\"\n    app:rcProgress=\"50\"\n    app:rcProgressColors=\"@array/sample_progress_gradient\"\n    app:rcRadius=\"30dp\" /\u003e\n```\n\n![Gradient Progress Bar Color](/image/sample_gradient.jpg)\n\nProgress bar does not clipped when size changed. So the gradient color will fully display without clipping also.\n\n## Apply Progress Change Animation\n\nAnimation when progress change is disabled by default (exclude `IndeterminateProgressBar` and `IndeterminateCenteredProgressBar`).\n\nSo you have to enable the animation by XML attribute or programmatically\n\n```xml\n\u003ccom.akexorcist.roundcornerprogressbar.RoundCornerProgressBar\n    ...\n    app:rcAnimationEnable=\"true\"\n    app:rcAnimationSpeedScale=\"1\" /\u003e\n\n```\n\nWhen progress changed, the animation will applied automatically.\n\n![Comparison Between With/Without Animation](/image/animation_comparison.gif)\n\nAnimation speed scale's value is float between 0.2 - 5.0 (default is 1.0). Higher for slow down the animation, lower for speed up.\n\n# What's Next\n\n- IconTextRoundCornerProgressBar ([#69](https://github.com/akexorcist/Android-RoundCornerProgressBar/pull/69))\n- UI Preview improvement\n\n# Known Issues\n\n- Incorrect progress showing in `CenteredRoundCornerProgressBar` with 1%-2% value\n- Incorrect text's width in `TextRoundCornerProgressBar` when `outside` priority and value close to 100%\n- `setProgress(progress: Int)` does not update text position\n\n# Change Log\n\nSee [CHANGELOG.md](CHANGELOG.md)\n\n# Migration\n\nSee [MIGRATION.md](MIGRATION.md)\n\n# Licence\n\nCopyright 2023 Akexorcist\n\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless 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.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakexorcist%2Froundcornerprogressbar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakexorcist%2Froundcornerprogressbar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakexorcist%2Froundcornerprogressbar/lists"}