{"id":19767466,"url":"https://github.com/glomadrian/loading-balls","last_synced_at":"2025-04-04T20:15:28.795Z","repository":{"id":138276850,"uuid":"46890994","full_name":"glomadrian/loading-balls","owner":"glomadrian","description":"A highly configurable library to do loading progress with animated balls","archived":false,"fork":false,"pushed_at":"2015-12-03T19:06:13.000Z","size":13526,"stargazers_count":917,"open_issues_count":9,"forks_count":118,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-03-28T19:12:05.100Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/glomadrian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-25T22:27:13.000Z","updated_at":"2025-03-01T00:09:02.000Z","dependencies_parsed_at":"2023-03-30T19:57:09.765Z","dependency_job_id":null,"html_url":"https://github.com/glomadrian/loading-balls","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glomadrian%2Floading-balls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glomadrian%2Floading-balls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glomadrian%2Floading-balls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/glomadrian%2Floading-balls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/glomadrian","download_url":"https://codeload.github.com/glomadrian/loading-balls/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242681,"owners_count":20907134,"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":[],"created_at":"2024-11-12T04:29:49.629Z","updated_at":"2025-04-04T20:15:28.775Z","avatar_url":"https://github.com/glomadrian.png","language":"Java","funding_links":[],"categories":["Libs"],"sub_categories":["\u003cA NAME=\"Widget\"\u003e\u003c/A\u003eWidget"],"readme":"Loading Balls\n-----------------\n[![Download](https://api.bintray.com/packages/glomadrian/maven/MaterialCodeInput/images/download.svg) ](https://bintray.com/glomadrian/maven/loading-balls/_latestVersion)\n\n\nA highly configurable library to do loading progress with animated balls for\nAndroid\n\n\n\n![Demo Screenshot][1]\n\n\nHow to use\n----------\n\n### Custom attributes\n\n\n``` xml\nlib:path=\"triangle\"\n```\nThe shape of the movement, available: \n\n\t*  infinite\n\t*  square\n\t*  triangle\n\t*  circle\n\t*  diamond\n\t*  star\n\n\n``` xml\nlib:balls=\"3\"\n```\nNumber of balls used in the animation\n\n``` xml\nlib:movement_cycle_time=\"1500\"\n```\nThe time which the ball takes to do a complete cicle\n\n``` xml\nlib:enable_size_animation=\"true\"\n```\nEnables the size animation in the balls (by default is false)\n\n``` xml\nlib:size_cycle_time=\"500\"\n```\nThe time it takes to the ball to grow up and decrease the size one time\n\n\n``` xml\nlib:ball_size=\"6dp\"\n```\nSet the balls size\n\n``` xml\nlib:min_ball_size=\"5dp\"\nlib:max_ball_size=\"12dp\"\n```\nTo use with enable_size_animation=\"true\", set the min and the max ball size\n\n``` xml\nlib:ball_colors=\"@array/colors\"\n```\nArray of colors for the balls, if there are more balls than colors then repeat\ncolor balls\n\n``` xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cresources\u003e\n  \u003ccolor name=\"ball1\"\u003e#FFD91C\u003c/color\u003e\n  \u003ccolor name=\"ball2\"\u003e#FF4B4A\u003c/color\u003e\n  \u003ccolor name=\"ball3\"\u003e#3D8EFF\u003c/color\u003e\n\n  \u003cinteger-array name=\"colors\"\u003e\n    \u003citem\u003e@color/ball1\u003c/item\u003e\n    \u003citem\u003e@color/ball2\u003c/item\u003e\n    \u003citem\u003e@color/ball3\u003c/item\u003e\n  \u003c/integer-array\u003e\n\u003c/resources\u003e\n```\nSample colors array\n\nFor Gradle\n---------------------\n\nAdd repository\n\n```java\nrepositories {\n  maven {\n    url \"http://dl.bintray.com/glomadrian/maven\"\n  }\n}\n```\nAdd dependency\n```java\n  compile 'com.github.glomadrian:loadingballs:1.1@aar'\n```\n\n\n### Some Samples\n\n#### Default Infinite shape\n\n![Sample][1]\n\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n     android:layout_margin=\"30dp\"\n     android:layout_width=\"100dp\"\n     android:layout_height=\"100dp\"\n     lib:balls=\"3\"\n     lib:movement_cycle_time=\"1500\"\n     lib:enable_size_animation=\"true\"\n     lib:size_cycle_time=\"500\"\n     lib:min_ball_size=\"5dp\"\n     lib:max_ball_size=\"12dp\"\n     lib:ball_colors=\"@array/colors\"\n     android:layout_gravity=\"center\"\n     /\u003e\n```\n\n#### Infinite shape without size animation\n\n![Sample][2]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n      android:layout_margin=\"30dp\"\n      android:layout_width=\"100dp\"\n      android:layout_height=\"100dp\"\n      lib:balls=\"3\"\n      lib:movement_cycle_time=\"1000\"\n      lib:enable_size_animation=\"false\"\n      lib:ball_colors=\"@array/colors\"\n      android:layout_gravity=\"center\"\n      /\u003e\n```\n#### Infinite shape with 5 balls\n\n![Sample][3]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"5\"\n    lib:movement_cycle_time=\"1500\"\n    lib:enable_size_animation=\"true\"\n    lib:size_cycle_time=\"500\"\n    lib:min_ball_size=\"5dp\"\n    lib:max_ball_size=\"12dp\"\n    lib:ball_colors=\"@array/colors\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n\n#### Triangle shape with 3 balls and size animation\n\n![Sample][4]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n       android:layout_margin=\"30dp\"\n       android:layout_width=\"100dp\"\n       android:layout_height=\"100dp\"\n       lib:balls=\"3\"\n       lib:movement_cycle_time=\"1500\"\n       lib:enable_size_animation=\"true\"\n       lib:size_cycle_time=\"500\"\n       lib:min_ball_size=\"5dp\"\n       lib:max_ball_size=\"12dp\"\n       lib:ball_colors=\"@array/colors\"\n       lib:path=\"triangle\"\n       android:layout_gravity=\"center\"\n       /\u003e\n```\n\n#### Triangle shape with 2 balls\n\n![Sample][5]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n        android:layout_margin=\"30dp\"\n        android:layout_width=\"100dp\"\n        android:layout_height=\"100dp\"\n        lib:balls=\"2\"\n        lib:movement_cycle_time=\"800\"\n        lib:enable_size_animation=\"false\"\n        lib:ball_colors=\"@array/colors\"\n        lib:path=\"triangle\"\n        android:layout_gravity=\"center\"\n        /\u003e\n```\n\n#### Square shape with 3 balls\n\n![Sample][6]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"3\"\n    lib:movement_cycle_time=\"800\"\n    lib:enable_size_animation=\"false\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"square\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n\n#### Square shape with 5 balls and size animation\n\n![Sample][7]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"5\"\n    lib:movement_cycle_time=\"1200\"\n    lib:enable_size_animation=\"true\"\n    lib:size_cycle_time=\"500\"\n    lib:min_ball_size=\"5dp\"\n    lib:max_ball_size=\"12dp\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"square\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n\n#### Circle shape with 3 balls and size animation\n\n![Sample][8]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"3\"\n    lib:movement_cycle_time=\"1200\"\n    lib:enable_size_animation=\"true\"\n    lib:size_cycle_time=\"1500\"\n    lib:min_ball_size=\"5dp\"\n    lib:max_ball_size=\"12dp\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"circle\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n#### Circle shape with 2 balls without size animation\n\n![Sample][9]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"2\"\n    lib:movement_cycle_time=\"700\"\n    lib:enable_size_animation=\"false\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"circle\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n#### Star shape with 10 balls without size animation\n\n![Sample][10]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"10\"\n    lib:movement_cycle_time=\"2500\"\n    lib:enable_size_animation=\"false\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"star\"\n    lib:ball_size=\"5dp\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n#### Star shape with 5 balls and size animation\n\n![Sample][11]\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n         android:layout_margin=\"30dp\"\n         android:layout_width=\"100dp\"\n         android:layout_height=\"100dp\"\n         lib:balls=\"5\"\n         lib:movement_cycle_time=\"2500\"\n         lib:ball_colors=\"@array/colors\"\n         lib:path=\"star\"\n         lib:ball_size=\"5dp\"\n         lib:enable_size_animation=\"true\"\n         lib:size_cycle_time=\"800\"\n         lib:min_ball_size=\"5dp\"\n         lib:max_ball_size=\"8dp\"\n         android:layout_gravity=\"center\"\n         /\u003e\n```\n#### Star shape with 3 balls and size animation\n\n![Sample][12]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"3\"\n    lib:movement_cycle_time=\"2500\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"star\"\n    lib:ball_size=\"5dp\"\n    lib:enable_size_animation=\"true\"\n    lib:size_cycle_time=\"800\"\n    lib:min_ball_size=\"5dp\"\n    lib:max_ball_size=\"8dp\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n#### Diamond shape with 5 balls without size animation\n\n![Sample][14]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"5\"\n    lib:movement_cycle_time=\"2500\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"diamond\"\n    lib:ball_size=\"6dp\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n#### Diamond shape with 4 balls and size animation\n\n![Sample][13]\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n         android:layout_margin=\"30dp\"\n         android:layout_width=\"100dp\"\n         android:layout_height=\"100dp\"\n         lib:balls=\"4\"\n         lib:movement_cycle_time=\"2500\"\n         lib:ball_colors=\"@array/colors\"\n         lib:path=\"diamond\"\n         lib:ball_size=\"5dp\"\n         lib:enable_size_animation=\"true\"\n         lib:size_cycle_time=\"800\"\n         lib:min_ball_size=\"5dp\"\n         lib:max_ball_size=\"8dp\"\n         android:layout_gravity=\"center\"\n         /\u003e\n```\n#### Diamond shape with 10 balls without size animation\n\n![Sample][15]\n\n\n``` xml\n\u003ccom.github.glomadrian.loadingballs.BallView\n    android:layout_margin=\"30dp\"\n    android:layout_width=\"100dp\"\n    android:layout_height=\"100dp\"\n    lib:balls=\"10\"\n    lib:movement_cycle_time=\"2500\"\n    lib:ball_colors=\"@array/colors\"\n    lib:path=\"diamond\"\n    lib:ball_size=\"4dp\"\n    android:layout_gravity=\"center\"\n    /\u003e\n```\n\nDeveloped By\n------------\nAdrián García Lomas - \u003cglomadrian@gmail.com\u003e\n* [Twitter](https://twitter.com/glomadrian)\n* [LinkedIn](https://es.linkedin.com/in/glomadrian )\n\nLicense\n-------\n\n    Copyright 2015 Adrián García Lomas\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n[1]: ./art/1.gif\n[2]: ./art/2.gif\n[3]: ./art/3.gif\n[4]: ./art/4.gif\n[5]: ./art/5.gif\n[6]: ./art/6.gif\n[7]: ./art/7.gif\n[8]: ./art/8.gif\n[9]: ./art/9.gif\n[10]: ./art/10.gif\n[11]: ./art/11.gif\n[12]: ./art/12.gif\n[13]: ./art/13.gif\n[14]: ./art/14.gif\n[15]: ./art/15.gif\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglomadrian%2Floading-balls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglomadrian%2Floading-balls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglomadrian%2Floading-balls/lists"}