{"id":3442,"url":"https://github.com/imaNNeo/ArcChartView","last_synced_at":"2025-08-03T14:31:30.677Z","repository":{"id":56562576,"uuid":"114799222","full_name":"imaNNeo/ArcChartView","owner":"imaNNeo","description":"Arc Chart View (Draw Creative Statistic Arc Charts)","archived":true,"fork":false,"pushed_at":"2020-10-31T13:06:38.000Z","size":15099,"stargazers_count":105,"open_issues_count":3,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-05-23T02:33:02.037Z","etag":null,"topics":["android","chart","charts","chartview","customview","hacktoberfest","java","rating","statistics"],"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/imaNNeo.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":"2017-12-19T18:39:50.000Z","updated_at":"2024-04-03T10:17:23.000Z","dependencies_parsed_at":"2022-08-15T21:00:43.424Z","dependency_job_id":null,"html_url":"https://github.com/imaNNeo/ArcChartView","commit_stats":null,"previous_names":["imanneofight/arcchartview"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imaNNeo%2FArcChartView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imaNNeo%2FArcChartView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imaNNeo%2FArcChartView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imaNNeo%2FArcChartView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imaNNeo","download_url":"https://codeload.github.com/imaNNeo/ArcChartView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228548568,"owners_count":17935221,"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","chart","charts","chartview","customview","hacktoberfest","java","rating","statistics"],"created_at":"2024-01-05T20:16:41.667Z","updated_at":"2024-12-07T01:31:26.919Z","avatar_url":"https://github.com/imaNNeo.png","language":"Kotlin","readme":"[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![APK](https://img.shields.io/badge/APK-Demo-brightgreen.svg)](https://github.com/imaNNeoFighT/ArcChartView/raw/master/repo_files/AcvDemo-1-0-2.apk)\n[![](https://jitpack.io/v/imaNNeoFighT/ArcChartView.svg)](https://jitpack.io/#imaNNeoFighT/ArcChartView)\n[![Android Arsenal]( https://img.shields.io/badge/Android%20Arsenal-ArcChartView-green.svg?style=flat )]( https://android-arsenal.com/details/1/6599 )\n\n# ArcChartViewDemo\n\n\u003cimg src=\"./repo_files/images/sample_icons.png\" width=\"200\"\u003e\n\nYou can use this library to draw Arc charts\n\nand show your statistics or anything you want\n\nor maybe get some ratings from user.\n\nyou can download the [Demo apk file](https://github.com/imaNNeoFighT/ArcChartView/raw/master/repo_files/AcvDemo-1-0-2.apk) (you can first adjust your Chart in the app and then implement it in code)\n\n\u003cimg src=\"./repo_files/images/demoo.gif\" width=\"300\"\u003e\n\n\n\n## 1 - Getting Started\n\nBy this instructions you can add this library and i will explain how use it.\n\n\n\n### Add Maven to your root build.gradle\n\nFirst of all Add it in your root build.gradle at the end of repositories:\n\n```\nallprojects {\n  repositories {\n    ...\n    maven { url 'https://jitpack.io' }\n  }\n}\n```\n\n### Add Dependency\n\nAdd the dependency to your app build.gradle file\n\n```\ndependencies\n{\n    implementation 'com.github.imaNNeoFighT:ArcChartView:1.0.3.1'\n    // Or in older versions : \n    // compile 'com.github.imaNNeoFighT:ArcChartView:1.0.3.1'\n}\n```\n\nAnd then sync your gradle and take a tea .\n\n\n## 2 - About The View\nYou can simply use this View like other Views in android,\njust add ``ArcChartView`` in your java code or xml.\n\n## View Properties \n\nyou can customize StepBarView, all of this attributes can change via xml or code (runtime)\n  \n|Attribute|Type|Kotlin|Description|\n|:---:|:---:|:---:|:---:|\n|acv_lines_count|Integer|`linesCount`|lines count of chart (i mean arc lines), default value is `10`|\n|acv_lines_space|Dimensions|`linesSpace`|lines space (lines margin), default value is `4dp`|\n|acv_lines_width|Dimensions|`linesWidth`|lines width , default value is `6dp`|\n|acv_sections_count|Integer|`sectionsCount`|sections count , default value is `8`|\n|acv_sections_space|Dimensions|`sectionsSpace`|sections space (sections margin) , default value is `4dp`|\n|acv_mid_start_extra_offset|Dimensions|`midStartExtraOffset`|center extra offest size, default value is `16dp`|\n|acv_icon_size|Dimensions|`iconSize`|the icons size, default value is `32dp`|\n|acv_start_degree_offset|Float|`startDegreeOffset`|offset of start degree to design the view, default value is `0f`|\n|acv_allow_setting_value_by_touch|Boolean|`allowSettingValueByTouch`|disable or enable allow setting value by touch feature, default value is `true`|\n|acv_allow_animations_on_set_values|Boolean|`allowAnimationsOnSetValue`|disable or enable allow play animation on setting values, default value is `true`|\n\n\n\n## Set and get Sections value\nkeep in mind that sections position starts with 0\n\nto get a section value use this function\n```kotlin\nvalue = myArcChartView.getSectionValue(sectionPos)\n```\n\n\n\nand to set a section value use this function\n```kotlin\nmyArcChartView.getSectionValue(sectionPos,sectionValue)\n```\n\n\n\n\n\n## Change filled and unFilled colors\nto set the unFilled color (the section color that drawn behind) use this function\n```kotlin\nmyArcChartView.setFilldeColor(sectionPos, Color.BLACK)\n```\n\nand to set the filled color (the section color that drawn in top) use this function\n```kotlin\nmyArcChartView.setUnFilldeColor(sectionPos,Color.LTGRAY)\n```\n\n\u003cimg src=\"./repo_files/images/sample_change_color.png\" width=\"80\"\u003e\n\n\n\n## Change section icons\nto set the icons use this function\n```kotlin\nmyArcChartView.setSectionIcons(sectionIcons : MutableList\u003cBitmap?\u003e)\n```\n\n\n\u003cimg src=\"./repo_files/images/sample_icons.png\" width=\"300\"\u003e\n\n\n\n## View listener (ArcListener)\nyou can handle some actions (only sectionsIconClick for now)\njust set a listener and make your logic\n```kotlin\nmyArcChartView.listener = object : ArcChartView.AcvListener {\n            override fun onSectionsIconClicked(sectionPos: Int) {\n                //Handle Your Logic Here\n                Toast.makeText(applicationContext, sectionPos.toString(),Toast.LENGTH_SHORT).show()\n            }\n        }\n```\n\n\n## setValueByTouch (and callback)\nYou can set values by touch and you can disable this feature by 'acv_allow_setting_value_by_touch' attribute.\nAlso you can set a callBack listener to find out when values changed.\n```kotlin\nmyArcChartView.listener = object : ArcChartView.AcvListener {\n            override fun onStartSettingSectionValue(sectionPos: Int, sectionValue: Int) {\n                tvSectionsValue.setText(\"onStartSettingSectionValue $sectionPos $sectionValue\")\n            }\n\n            override fun onContinueSettingSectionValue(sectionPos: Int, sectionValue: Int) {\n                tvSectionsValue.setText(\"onContinueSettingSectionValue $sectionPos $sectionValue\")\n            }\n\n            override fun onFinishedSettingSectionValue(sectionPos: Int, sectionValue: Int) {\n                tvSectionsValue.setText(\"onFinishedSettingSectionValue $sectionPos $sectionValue\")\n            }\n        }\n```\n\u003cimg src=\"./repo_files/images/sample5.gif\" width=\"300\"\u003e\n\n\n## Implementing Rotate Animation (using startDegreeOffset attribute)\n```kotlin\n    val anim = ValueAnimator.ofFloat(0f,360f).apply {\n                repeatCount = ValueAnimator.INFINITE\n                repeatMode = ValueAnimator.RESTART\n                interpolator = OvershootInterpolator()\n                duration = 3000\n            }\n            anim.addUpdateListener {\n                if(isAnimating)\n                    myArcChartView.startDegreeOffset =\n                            it.animatedValue as Float\n            }\n            anim.start()\n```\n\u003cimg src=\"./repo_files/images/sample1.gif\" width=\"300\"\u003e\n\n\n\n\n\n## 3 - Some Samples\n\n### Sample 1\n\n```xml\n    \u003ccom.neo.arcchartview.ArcChartView\n        android:id=\"@+id/arc_chart_view\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:layout_constraintBottom_toTopOf=\"@+id/view_separator\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        app:acv_lines_count=\"10\"\n        app:acv_lines_width=\"6dp\"\n        app:acv_lines_space=\"4dp\"\n        app:acv_sections_count=\"8\"\n        app:acv_sections_space=\"2dp\"\n        app:acv_icon_size=\"32dp\"\n        app:acv_mid_start_extra_offset=\"12dp\"\n        /\u003e\n```\n\u003cimg src=\"./repo_files/images/sample2.png\" width=\"300\"\u003e\n\n\n\n\n### Sample 2\n\n```xml\n    \u003ccom.neo.arcchartview.ArcChartView\n        android:id=\"@+id/arc_chart_view\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:layout_constraintBottom_toTopOf=\"@+id/view_separator\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        app:acv_lines_count=\"4\"\n        app:acv_lines_width=\"17dp\"\n        app:acv_lines_space=\"2dp\"\n        app:acv_sections_count=\"3\"\n        app:acv_sections_space=\"6dp\"\n        app:acv_icon_size=\"36dp\"\n        app:acv_mid_start_extra_offset=\"0dp\"\n        /\u003e\n```\n\u003cimg src=\"./repo_files/images/sample3.png\" width=\"300\"\u003e\n\n\n\n\n### Sample 3\n\n```xml\n    \u003ccom.neo.arcchartview.ArcChartView\n        android:id=\"@+id/arc_chart_view\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:layout_constraintBottom_toTopOf=\"@+id/view_separator\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        app:acv_lines_count=\"6\"\n        app:acv_lines_width=\"14dp\"\n        app:acv_lines_space=\"0dp\"\n        app:acv_sections_count=\"18\"\n        app:acv_sections_space=\"0dp\"\n        app:acv_icon_size=\"14dp\"\n        app:acv_mid_start_extra_offset=\"8dp\"\n        /\u003e\n```\n\u003cimg src=\"./repo_files/images/sample4.png\" width=\"300\"\u003e\n\n\n\n### Sample 4\n\n```kotlin\n    myArcChartView.allowAnimationsOnSetValue = true \n```\n\u003cimg src=\"./repo_files/images/sample6.gif\" width=\"300\"\u003e\n\n\n\n\n\n\n\u003c!--- \u003ca href='https://ko-fi.com/M4M67AFG' target='_blank'\u003e\u003cimg height='36' style='border:0px;height:36px;' src='https://az743702.vo.msecnd.net/cdn/kofi1.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' /\u003e\u003c/a\u003e ---\u003e\n\n\n\n\n\n# License\n```\nCopyright 2018 Iman Khoshabi\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":["https://ko-fi.com/M4M67AFG'"],"categories":["Libraries"],"sub_categories":["Charts"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FimaNNeo%2FArcChartView","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FimaNNeo%2FArcChartView","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FimaNNeo%2FArcChartView/lists"}