{"id":13611551,"url":"https://github.com/skydoves/Flourish","last_synced_at":"2025-04-13T04:34:58.296Z","repository":{"id":82424252,"uuid":"219096591","full_name":"skydoves/Flourish","owner":"skydoves","description":"🎩 Flourish implements dynamic ways to show up and dismiss layouts with animations.","archived":false,"fork":false,"pushed_at":"2020-08-23T06:26:50.000Z","size":621,"stargazers_count":175,"open_issues_count":0,"forks_count":24,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-01T01:03:27.373Z","etag":null,"topics":["android","android-library","android-ui","animation","flourish","kotlin","layout","skydoves"],"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/skydoves.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":".github/CODEOWNERS","security":null,"support":null,"governance":null},"funding":{"github":"skydoves","custom":["https://www.paypal.me/skydoves","https://www.buymeacoffee.com/skydoves"]}},"created_at":"2019-11-02T03:11:38.000Z","updated_at":"2024-08-01T15:53:12.000Z","dependencies_parsed_at":"2023-06-15T15:30:39.818Z","dependency_job_id":null,"html_url":"https://github.com/skydoves/Flourish","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2FFlourish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2FFlourish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2FFlourish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skydoves%2FFlourish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skydoves","download_url":"https://codeload.github.com/skydoves/Flourish/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223568256,"owners_count":17166627,"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","android-library","android-ui","animation","flourish","kotlin","layout","skydoves"],"created_at":"2024-08-01T19:01:57.530Z","updated_at":"2024-11-07T18:30:40.004Z","avatar_url":"https://github.com/skydoves.png","language":"Kotlin","readme":"# Flourish\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://android-arsenal.com/api?level=16\"\u003e\u003cimg alt=\"API\" src=\"https://img.shields.io/badge/API-16%2B-brightgreen.svg?style=flat\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://travis-ci.com/skydoves/Flourish\"\u003e\u003cimg alt=\"Build Status\" src=\"https://travis-ci.com/skydoves/Flourish.svg?branch=master\"/\u003e\u003c/a\u003e\n  \u003ca href=\"https://skydoves.github.io/libraries/flourish/javadoc/flourish/com.skydoves.flourish/index.html\"\u003e\u003cimg alt=\"Javadoc\" src=\"https://img.shields.io/badge/Javadoc-Flourish-yellow\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n🎩 Flourish implements dynamic ways to show up and dismiss layouts with animations.\u003cbr\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065498-6f2d1980-fd6d-11e9-8a37-a530f2848501.gif\" width=\"32%\"/\u003e\n  \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68067075-40bb3880-fd85-11e9-8296-13f0a58b1ec6.gif\" width=\"32%\"/\u003e\n\u003c/p\u003e\n\n## Including in your project\n[![Download](https://api.bintray.com/packages/devmagician/maven/flourish/images/download.svg) ](https://bintray.com/devmagician/maven/flourish/_latestVersion)\n[![Jitpack](https://jitpack.io/v/skydoves/Flourish.svg)](https://jitpack.io/#skydoves/Flourish) \u003cbr\u003e\nAdd below codes to your **root** `build.gradle` file (not your module build.gradle file).\n```gradle\nallprojects {\n    repositories {\n        jcenter()\n    }\n}\n```\nAnd add a dependency code to your **module**'s `build.gradle` file.\n```gradle\ndependencies {\n    implementation \"com.github.skydoves:flourish:1.0.1\"\n}\n```\n\n## Usage\n### Basic Example\nHere is a basic example of implementing `Flourish` using `Flourish.Builder` class.\n\n```java\nFlourish flourish = new Flourish.Builder(parentLayout)\n    // sets the flourish layout for showing and dismissing on the parent layout.\n    .setFlourishLayout(R.layout.layout_flourish_main)\n    // sets the flourishing animation for showing and dismissing.\n    .setFlourishAnimation(FlourishAnimation.BOUNCE)\n    // sets the orientation of the starting point.\n    .setFlourishOrientation(FlourishOrientation.TOP_LEFT)\n    // sets a flourishListener for listening changes.\n    .setFlourishListener(flourishListener)\n    // sets the flourish layout should be showed on start. \n    .setShowOnStart(false)\n    // sets the duration of the flourishing.\n    .setDuration(800L)\n    .build();\n```\n\n### Create using kotlin dsl\nThis is how to create an instance of `Flourish` using kotlin dsl.\n\n```kotlin\nval myFlourish = createFlourish(parentLayout) {\n  setFlourishLayout(R.layout.layout_flourish_main)\n  setFlourishAnimation(FlourishAnimation.ACCELERATE)\n  setFlourishOrientation(FlourishOrientation.TOP_RIGHT)\n  setShowOnStart(true)\n  setFlourishListener { }\n}\n```\n\n### Show and dismiss\nHere is how to show and dismiss.\n\n```kotlin\nflourish.show()\nflourish.dismiss()\n\n// we can do something after showing and dismissing using a lambda.\nflourish.show { toast(\"showed\") }\nflourish.dismiss { toast(\"dismissed\") }\n```\n\n### FlourishView\nWe can get a `flourishView` from an instance of `Flourish`.\n\n```kotlin\nval flourishView: View = flourish.flourishView\n\nflourish.flourishView.toolbar_title.text = \"Profile\"\nflourish.flourishView.toolbar_more.setOnClickListener {\n  flourish.dismiss { toast(\"dismissed\") }\n}\n```\n\n### FlourishListener\nWe can listen to the flourish layout is showed or dismissed.\n```java\n.setFlourishListener(new FlourishListener() {\n  @Override\n  public void onChanged(boolean isShowing) {\n    // do something\n  }\n})\n```\nWe can simplify using lambda in kotlin.\n```kotlin\n.setFlourishListener { \n  toast(\"isShowing : $it\") \n}\n```\n\n### FlourishOrientation\nWe can customize a start point orientation of the showing and dismiss.\n```\n.setFlourishOrientation(FlourishOrientation.TOP_LEFT)\n.setFlourishOrientation(FlourishOrientation.TOP_RIGHT)\n.setFlourishOrientation(FlourishOrientation.BOTTOM_LEFT)\n.setFlourishOrientation(FlourishOrientation.BOTTOM_RIGHT)\n```\n\nTOP_LEFT | TOP_RIGHT | BOTTOM_LEFT | BOTTOM_RIGHT |\n| :---------------: | :---------------: | :---------------: | :---------------: |\n| \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065839-40fe0880-fd72-11e9-87ad-64b6f601d94a.gif\" align=\"center\" width=\"100%\"/\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065841-41969f00-fd72-11e9-9d1c-4035836e166a.gif\" align=\"center\" width=\"100%\"/\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065840-40fe0880-fd72-11e9-9716-b0bc2f79f1ef.gif\" align=\"center\" width=\"100%\"/\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065842-41969f00-fd72-11e9-9dfd-65f42e2f2ed5.gif\" align=\"center\" width=\"100%\"/\u003e \n\n### FlourishAnimation\nWe can customize an animation of the showing and dismiss.\n\nNORMAL | ACCELERATE | BOUNCE\n| :---------------: | :---------------: | :---------------: |\n| \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065894-211b1480-fd73-11e9-82db-3584545382e2.gif\" align=\"center\" width=\"100%\"/\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065893-211b1480-fd73-11e9-98e2-0468293db7a5.gif\" align=\"center\" width=\"100%\"/\u003e | \u003cimg src=\"https://user-images.githubusercontent.com/24237865/68065498-6f2d1980-fd6d-11e9-8a37-a530f2848501.gif\" align=\"center\" width=\"100%\"/\u003e\n\n## Find this library useful? :heart:\nSupport it by joining __[stargazers](https://github.com/skydoves/Flourish/stargazers)__ for this repository. :star:\u003cbr\u003e\nAnd __[follow](https://github.com/skydoves)__ me for my next creations! 🤩\n\n# License\n```xml\nCopyright 2019 skydoves (Jaewoong Eum)\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://github.com/sponsors/skydoves","https://www.paypal.me/skydoves","https://www.buymeacoffee.com/skydoves"],"categories":["Kotlin"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskydoves%2FFlourish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskydoves%2FFlourish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskydoves%2FFlourish/lists"}