{"id":23700884,"url":"https://github.com/cergo123/mindo","last_synced_at":"2025-09-03T04:31:35.186Z","repository":{"id":52954300,"uuid":"189906606","full_name":"cergo123/Mindo","owner":"cergo123","description":"Generate mind maps easily in your android app.","archived":false,"fork":false,"pushed_at":"2019-07-25T00:41:47.000Z","size":403,"stargazers_count":86,"open_issues_count":1,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-08T12:50:42.222Z","etag":null,"topics":["android","hierarchy","java","library","mindmapping","ui","view"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cergo123.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["JagarYousef"],"custom":"https://www.paypal.me/jagaryousef"}},"created_at":"2019-06-02T23:47:01.000Z","updated_at":"2024-10-26T21:57:51.000Z","dependencies_parsed_at":"2022-08-28T09:02:22.097Z","dependency_job_id":null,"html_url":"https://github.com/cergo123/Mindo","commit_stats":null,"previous_names":["cergo123/mindo"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cergo123%2FMindo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cergo123%2FMindo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cergo123%2FMindo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cergo123%2FMindo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cergo123","download_url":"https://codeload.github.com/cergo123/Mindo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231835716,"owners_count":18433734,"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","hierarchy","java","library","mindmapping","ui","view"],"created_at":"2024-12-30T09:19:28.498Z","updated_at":"2024-12-30T09:19:29.151Z","avatar_url":"https://github.com/cergo123.png","language":"Kotlin","funding_links":["https://github.com/sponsors/JagarYousef","https://www.paypal.me/jagaryousef"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://img.shields.io/github/license/JagarYousef/Mindo.svg\" /\u003e\n\u003cbr\u003e\nThis android library intends to apply a view for Mind Maps / Hierarchy views easily in Android.\n\u003cbr\u003e\u003cbr\u003e\n\u003ccenter\u003e\u003cimg src=\"https://user-images.githubusercontent.com/41321155/58798331-051c1700-860b-11e9-9359-7a2b21eea069.gif\"\u003e\u003c/img\u003e\u003c/center\u003e\n## Features: \n\n- Create complicated items and connections easily\n- Flexibility (Custom connections, distance, full control of shapes)\n- Save the view directly as an image\n- Zooming and Scrolling of the view (v2.x.x and above)\n\n\n\n## Installation:\n\n**Step 1.** Add it in your root build.gradle at the end of repositories:\n\n```groovy\n\tallprojects {\n\t\trepositories {\n\t\t\t...\n\t\t\tmaven { url 'https://jitpack.io' }\n\t\t}\n\t}\n```\n\n**Step 2.** Add the dependency\n\n```groovy\n\tdependencies {\n\t        implementation 'com.github.JagarYousef:Mindo:2.0.0'\n\t}\n```\n\n\n\n## Quick Usage Guide:\n\n1. Create a MindMappingView in your xml layout: \n\n```xml\n\u003cme.jagar.mindmappingandroidlibrary.Views.MindMappingView\n    android:id=\"@+id/mind_mapping_view\"\n    android:background=\"#C4B8B8\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\" /\u003e\n\u003c!---You need to add background to display connections--\u003e\n```\n\n2. After initialization in the activity you can use it to add the root (Central Item) and other items  in parent/item pairs.\n\n\n\n- Adding the central item: \n\n```java\nItem item = new Item(MainActivity.this, \"Root\", \"This is an root item\", true);\nmindMappingView.addCentralItem(item, false); //I didn't want to make the root drag able\n```\n\n\n\n- An example of adding an item where its parent is the root item:\n\n```java\nItem child = new Item(MainActivity.this, \"Child\", \"This is a child\", true);\nmindMappingView.addItem(child, item, 200, 10, ItemLocation.TOP, true, null); //It will be drag able but there will not be a text on the connection between the root and the child\n```\n\n\n\n- Adding `ConnectionTextMessage` (the text on the connection between the item and its root):\n\n```java\nConnectionTextMessage connectionTextMessage = new ConnectionTextMessage(MainActivity.this);\nconnectionTextMessage.setText(\"This message will be displayed on the connection between Child and Root\");\nmindMappingView.addItem(child, item, 200, 10, ItemLocation.TOP, true, connectionTextMessage); //It will be drag able and there will be a text on the connection between the root and the child\n```\n\n\n\n- Adding a `CustomConnection` in the case where there is no root and child: \n\n```java\nmindMappingView.addCustomConnection(child1, ItemLocation.BOTTOM, child2, ItemLocation.RIGHT, connectionTextMessage,  5,\"#000000\", 10, 15);\n```\n\n\n\n- You can save the view easily as an image using this function: \n\n```java\n//Do not forget the permissions\nSaveAs.saveAsImage(MindMappingView, PATH_WHERE_IMAGE_WILL_BE_SAVED);\n```\n\n\n\n- If you set the item as drag able, you need a different way to add `OnClikcListener` for this item: \n\n```java\nmindMappingView.setOnItemClicked(new OnItemClicked() {\n    @Override\n    public void OnClick(Item item) {\n        item.setPressed(true);\n        if (item == child){\n            Toast.makeText(MainActivity.this, \"child is clicked\", Toast.LENGTH_LONG)\n                    .show();\n        }\n        else if (item == root){\n            Toast.makeText(MainActivity.this, \"root is clicked\", Toast.LENGTH_LONG)\n                    .show();\n        }\n    }\n});\n```\n\n\n\n## Zooming:\n\nFrom version 2.0.0 you are able to include the MindMappingView inside a ZoomLayout that comes with too many options of  zooming and scrolling, BUT it is highly recommended to keep the MindMappingView in a fixed size when using this feature,  like the example below: \n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cme.jagar.mindmappingandroidlibrary.Zoom.ZoomLayout xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    xmlns:tools=\"http://schemas.android.com/tools\"\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    tools:context=\".MainActivity\"\n    android:layout_gravity=\"center\"\n    android:gravity=\"center\"\n    android:layout_height=\"match_parent\"\n    android:scrollbars=\"vertical|horizontal\"\n    app:transformation=\"centerInside\"\n    app:transformationGravity=\"auto\"\n    app:alignment=\"center\"\n    app:overScrollHorizontal=\"true\"\n    app:overScrollVertical=\"true\"\n    app:overPinchable=\"true\"\n    app:horizontalPanEnabled=\"true\"\n    app:verticalPanEnabled=\"true\"\n    app:zoomEnabled=\"true\"\n    app:flingEnabled=\"false\"\n    app:scrollEnabled=\"true\"\n    app:oneFingerScrollEnabled=\"false\"\n    app:twoFingersScrollEnabled=\"true\"\n    app:threeFingersScrollEnabled=\"true\"\n    app:minZoom=\"0.7\"\n    app:minZoomType=\"zoom\"\n    app:maxZoom=\"2.5\"\n    app:maxZoomType=\"zoom\"\n    app:animationDuration=\"280\"\n    app:hasClickableChildren=\"true\"\u003e\n        \u003cme.jagar.mindmappingandroidlibrary.Views.MindMappingView\n            android:layout_width=\"1000dp\"\n            android:background=\"#C4B8B8\"\n            android:id=\"@+id/mind_mapping_view\"\n            android:layout_height=\"1000dp\" /\u003e\n\u003c/me.jagar.mindmappingandroidlibrary.Zoom.ZoomLayout\u003e\n```\nYou can  control the zoom layout programmatically like below:\n```java\nzoomLayout.panTo(x, y, true); // Shorthand for zoomLayout.getEngine().panTo(x, y, true)\nzoomLayout.panBy(deltaX, deltaY, true);\nzoomLayout.zoomTo(zoom, true);\nzoomLayout.zoomBy(factor, true);\nzoomLayout.realZoomTo(realZoom, true);\nzoomLayout.moveTo(zoom, x, y, true);\n```\n\n## Customization:\n\nThe view, its items and the connection texts are extended from other views so all its features can be applied except `OnClickListener` in dragged items: \n\n| View                  | Extends        |\n|-----------------------|----------------|\n| Item                  | LinearLayout   |\n| MindMappingView       | RelativeLayout |\n| ConnectionTextMessage | TextView       |\n| Item's Title          | TextView       |\n| Item's Content        | TextView       |\n\n\n\n## License:\n\n```\nCopyright (C) 2019 Jagar Yousef\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcergo123%2Fmindo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcergo123%2Fmindo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcergo123%2Fmindo/lists"}