{"id":15015675,"url":"https://github.com/shashi278/taptargetview","last_synced_at":"2025-10-06T09:23:56.039Z","repository":{"id":57473365,"uuid":"236224335","full_name":"shashi278/TapTargetView","owner":"shashi278","description":"An attempt to mimic android's TapTargetView using Python and Kivy","archived":false,"fork":false,"pushed_at":"2021-05-11T19:11:20.000Z","size":3581,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-28T10:21:23.092Z","etag":null,"topics":["android-animation","kivy","python3","taptargetview"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shashi278.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}},"created_at":"2020-01-25T20:16:50.000Z","updated_at":"2023-11-26T08:46:10.000Z","dependencies_parsed_at":"2022-09-08T13:12:11.408Z","dependency_job_id":null,"html_url":"https://github.com/shashi278/TapTargetView","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shashi278%2FTapTargetView","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shashi278%2FTapTargetView/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shashi278%2FTapTargetView/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shashi278%2FTapTargetView/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shashi278","download_url":"https://codeload.github.com/shashi278/TapTargetView/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248549853,"owners_count":21122925,"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-animation","kivy","python3","taptargetview"],"created_at":"2024-09-24T19:47:46.285Z","updated_at":"2025-10-06T09:23:55.978Z","avatar_url":"https://github.com/shashi278.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![TapTargetView demo](demo/ttv_demo_2.gif)\n\n# TapTargetView [![Build Status](https://travis-ci.org/shashi278/TapTargetView.svg?branch=master)](https://travis-ci.org/shashi278/TapTargetView)\n###### \u003ci\u003eThis is now being used in [KivyMD](https://github.com/HeaTTheatR/KivyMD)\u003c/i\u003e\n\nAn attempt to mimic android's TapTargetView using Python and Kivy.\n\nInspired by [Android's TapTargetView](https://github.com/KeepSafe/TapTargetView)\n\n## Installation\n#### *Using Pip*\n * `pip install taptargetview`\n  \n#### *Manually*\n\n * `git clone https://github.com/shashi278/TapTargetView.git`\n    \n * `cd TapTargetView`\n    \n * `python setup.py install`\n\n## Simple Usage\n```python\n\nTapTargetView(\n        my_button,\n        outer_circle_color= [0,1,1],\n        outer_circle_alpha= .85,\n        title_text= \"My Button\",\n        description_text=\"It does something when pressed\",\n        widget_position=\"center\",\n        title_position=\"right_bottom\",\n        end= my_callback\n).start()\n\n```\nRefer to [demo](demo/ttv_demo.py) for extensive usages.\n\n### Sequencing\nSequencing is easier. Just bind `start` of one instance to the `on_end` of another instance.\n```python\n\nttv2= TapTargetView(\n        my_button2,\n        outer_circle_color= [1,0,1],\n        outer_circle_alpha= .05,\n        title_text= \"My Second Button\",\n        description_text=\"It too does something when pressed\",\n        widget_position=\"left\",\n        end= my_callback\n      )\n      \nttv1= TapTargetView(\n        my_button1,\n        outer_circle_color= [0,1,1],\n        outer_circle_alpha= .85,\n        title_text= \"My First Button\",\n        description_text=\"It does something when pressed\",\n        widget_position=\"center\",\n        title_position=\"right_bottom\",\n        end= ttv2.start\n        )\n\nttv1.start()\n\n```\n\n### Customizable attributes:\n```python\n\"\"\"\nwidget:                 widget to add TapTargetView upon\nouter_radius:           (optional), Radius for outer circle, defaults to dp(300)\nouter_circle_color:     (optional), Color for the outer circle, defaults to [1,0,0]\nouter_circle_alpha:     (optional), Alpha value for outer circle, defaults to .96\ntarget_radius:          (optional), Radius for target circle, defaults to dp(45)\ntarget_circle_color:    (optional), Color for target circle, defaults to [1,1,1]\ntitle_text:             (optional), Title to be shown on the view, defaults to ''\ntitle_text_size:        (optional), Text size for title, defaults to dp(25)\ntitle_text_color:       (optional), Text color for title, defaults to [1,1,1,1]\ntitle_text_bold:        (optional), Whether title should be bold, defaults to `True`\ndescription_text:       (optional), Description to be shown below the title(Keep it short),\n                        defaults to ''\ndescription_text_size:  (optional), Text size for description text, defaults to dp(20)\ndescription_text_color: (optional), Text color for description text, defaults to [.9,.9,.9,1]\ndescription_text_bold:  (optional), Whether description should be bold, defaults to False\ndraw_shadow:            (optional), Whether to show shadow, defaults to False\ncancelable:             (optional), Whether clicking outside the outer circle dismisses the view,\n                        defaults to False\nwidget_position:        (optional), Sets the position of the widget on the outer_circle.\n                        Can be one of \"left\",\"right\",\"top\",\"bottom\",\"left_top\",\"right_top\",\n                        \"left_bottom\",\"right_bottom\", and \"center\", defaults to \"left\"\ntitle_position:         (optional), Sets the position of `title_text` on the outer circle.\n                        Only works if `widget_position` is set to \"center\". In all other cases,\n                        it calculates the `title_position` itself.\n                        Must be set to other than \"auto\" when `widget_position` is set to \"center\".\n                        Can be one of \"left\",\"right\",\"top\",\"bottom\",\"left_top\",\"right_top\",\n                        \"left_bottom\", and \"right_bottom\", defaults to \"auto\" (since `widget_position` is \"left\")\nstop_on_outer_touch:    (optional), whether clicking on outer circle stops the animation,\n                        defaults to False\nstop_on_target_touch:   (optional), whether clicking on target circle should stop the animation,\n                        defaults to True\nend:                    (optional), Function to be called when the animation stops, defaults to None\n\"\"\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshashi278%2Ftaptargetview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshashi278%2Ftaptargetview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshashi278%2Ftaptargetview/lists"}