{"id":20473681,"url":"https://github.com/joshuadeguzman/typedkt","last_synced_at":"2026-04-18T12:03:30.267Z","repository":{"id":127064028,"uuid":"141463356","full_name":"joshuadeguzman/TypedKt","owner":"joshuadeguzman","description":"Animated TextView effects for Android","archived":false,"fork":false,"pushed_at":"2018-08-05T16:37:41.000Z","size":1142,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-16T15:28:10.295Z","etag":null,"topics":["android-library","animation","gradle","jitpack","kotlin","text","text-effects"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/joshuadeguzman.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-18T16:47:00.000Z","updated_at":"2019-06-22T23:42:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"c7a3ef3d-ebdd-451b-b6ed-e120096f9e49","html_url":"https://github.com/joshuadeguzman/TypedKt","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/joshuadeguzman/TypedKt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuadeguzman%2FTypedKt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuadeguzman%2FTypedKt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuadeguzman%2FTypedKt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuadeguzman%2FTypedKt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joshuadeguzman","download_url":"https://codeload.github.com/joshuadeguzman/TypedKt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joshuadeguzman%2FTypedKt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31967993,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-library","animation","gradle","jitpack","kotlin","text","text-effects"],"created_at":"2024-11-15T14:26:23.431Z","updated_at":"2026-04-18T12:03:30.244Z","avatar_url":"https://github.com/joshuadeguzman.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TypedKt\nAnimated TextView effects for Android\n\n### Features\n* Modular TextEffects (on-going)\n* TypeWriterEffect\n* Customizable\n* Lightweight (Low Memory Usage)\n* Thread safe\n\n### Initial Release\n* Supports character and word animation\n* Option for custom delay\n* Option for custom string to best animated for a specific view\n* Option for callback after the animation\n* Supports loop configuration\n* Passing of custom delimiter using Regex pattern\n* Added removal of callbacks\n* Optimized method invocations\n\n### Installation\n```gradle\nrepositories {\n    maven { url \"https://jitpack.io\" }\n}\n\ndependencies {\n    // Replace version with release version, e.g. 1.0.0-alpha, -SNAPSHOT\n    implementation 'io.jmdg:typedkt:[VERSION]'\n}\n```\n\n![Demo](https://raw.githubusercontent.com/joshuadeguzman/TypedKt/b8d9f5fda3da91bff770b875e9bd98904315247b/app/src/main/res/drawable/demo.gif)\n\n### Usage\n```kotlin\noverride fun onCreate(savedInstanceState: Bundle?) {\n    super.onCreate(savedInstanceState)\n    setContentView(R.layout.activity_main)\n\n    bt_animate.setOnClickListener {\n        // Animate view with XML configuration\n        tkv_animate_xml.animateText()\n\n        // Animate by characters\n        tkv_character.setLooped(true)\n\n        // Setup options before calling this method for it to take effect\n        tkv_character.animateText()\n\n        // Animate by word\n        tkv_words.setAnimationByWord()\n        tkv_words.setEndAnimationListener {\n            callSomeMethod()\n        }\n        tkv_words.setLooped(true)\n\n        // Setup options before calling this method for it to take effect\n        tkv_words.animateText()\n    }\n\n    bt_skip.setOnClickListener {\n        tkv_character.skipAnimation()\n        tkv_words.skipAnimation()\n    }\n\n    bt_stop.setOnClickListener {\n        tkv_character.stopAnimation()\n        tkv_words.stopAnimation()\n    }\n}\n```\n\n##### Custom configurations via code\n```kotlin\ntkv_character.setLooped(true) // default false\ntkv_character.setDelay(100) // default 150\ntkv_character.setAnimationByCharacter() // default animation\ntkv_character.setAnimationByWord() // default by character\ntkv_character.setAnimationByWord(\"regex pattern\") // default delimiter is \"\\\\s+\" which denotes space\ntkv_character.setEndAnimationListener { // default null\n    callSomeMethod()\n}\n```\n\n##### Custom configurations via XML\n```xml\n\u003cio.jmdg.typedkt.TypedKtView\n    ...\n    app:animateOnLoad=\"false\"\n    app:delay=\"150\"\n    app:isAnimatedByWord=\"false\"\n    app:isLooped=\"false\"/\u003e\n```\n\n##### Important: Validate callbacks\n```kotlin\noverride fun onResume() {\n    super.onResume()\n    // Resume animation\n    if(tkv_animate_xml.isAnimating()){\n        tkv_animate_xml.animateText()\n    }\n\n    if(tkv_character.isAnimating()){\n        tkv_character.animateText()\n    }\n\n    if(tkv_words.isAnimating()){\n        tkv_words.animateText()\n    }\n}\n\noverride fun onPause() {\n    super.onPause()\n    // Pause animation\n    tkv_animate_xml.skipAnimation()\n    tkv_character.skipAnimation()\n    tkv_words.skipAnimation()\n}\n\noverride fun onDestroy() {\n    super.onDestroy()\n    // Remove callbacks\n    tkv_animate_xml.removeAnimation()\n    tkv_character.removeAnimation()\n    tkv_words.removeAnimation()\n}\n```\n\n#### META\n\nJoshua de Guzman | code@jmdg.io\n\nDistributed under the MIT license. \n\n#### CONTRIBUTING\n\n1. Fork it (\u003chttps://github.com/joshuadeguzman/ButtonsKt/fork\u003e)\n2. Create your feature branch (`git checkout -b feature/fooBar`)\n3. Commit your changes (`git commit -am 'Add some fooBar'`)\n4. Push to the branch (`git push origin feature/fooBar`)\n5. Create a new Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuadeguzman%2Ftypedkt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoshuadeguzman%2Ftypedkt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoshuadeguzman%2Ftypedkt/lists"}