[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7368":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},7368,"Konfetti","DanielMartinus\u002FKonfetti","DanielMartinus","Celebrate more with this lightweight confetti particle system 🎊","",null,"Kotlin",3377,312,47,21,0,1,7,60.69,"ISC License",false,"main",true,[25,26,27,28,29,30,31,32,33,34],"android","android-animation","android-ui","animations","canvas","compose","kotlin","particle-system","particles","party","2026-06-12 04:00:33","\u003C!-- LOGO -->\n\u003Cbr \u002F>\n\u003Ch1>\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F1636897\u002F147644327-112cc446-75ea-4477-80ac-1d0cd60fc45e.png\" alt=\"Logo\">\n\u003C\u002Fh1>\n\u003Cp align=\"center\">\n    Easily celebrate little and big moments in your app with this lightweight confetti library!\n    \u003Cbr \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Fopensource.org\u002Flicenses\u002FISC\">\u003Cimg alt=\"License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-ISC-yellow.svg\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fandroid-arsenal.com\u002Fapi?level=16s\">\u003Cimg alt=\"API level 16\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-16%2B-brightgreen.svg?style=flat\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"http:\u002F\u002Ftwitter.com\u002Fdionsegijn\">\u003Cimg alt=\"API level 16\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTwitter-@dionsegijn-blue.svg?style=flat\"\u002F>\u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Factions\">\u003Cimg alt=\"Build Status\" src=\"https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fworkflows\u002FCI\u002Fbadge.svg\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#getting-started\">Getting started\u003C\u002Fa> •\n  \u003Ca href=\"#usage\">How To Use\u003C\u002Fa> •\n  \u003Ca href=\"#community\">Community\u003C\u002Fa> •\n  \u003Ca href=\"#contribute\">Contribute\u003C\u002Fa> •\n  \u003Ca href=\"#report-an-issue\">Report issue\u003C\u002Fa> •\n  \u003Ca href=\"#license\">License\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>New version: 2.0.0 is now released! Jetpack compose support - improved animations and API - \u003Ca href=\"https:\u002F\u002Fdionsegijn.dev\u002Fkonfetti-migration-guide-v2.x.x\">see migration guide here\u003C\u002Fa>\u003C\u002Fstrong>\n\u003C\u002Fp>\n\n## Getting started\n\nCompose project:\n```groovy\ndependencies {\n    implementation 'nl.dionsegijn:konfetti-compose:2.0.5'\n}\n```\n\nView based (XML) project:\n```groovy\ndependencies {\n    implementation 'nl.dionsegijn:konfetti-xml:2.0.5'\n}\n```\n\nFind latest version and release notes [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Freleases)\n\n## Usage\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Samples:\u003C\u002Fstrong>\u003C\u002Fbr>\n  \u003Ca href=\"\u002Fsamples\u002Fcompose-kotlin\u002Fsrc\u002Fmain\">compose\u003C\u002Fa> •\n  \u003Ca href=\"\u002Fsamples\u002Fxml-kotlin\u002Fsrc\u002Fmain\">xml-kotlin\u003C\u002Fa> •\n  \u003Ca href=\"\u002Fsamples\u002Fxml-java\u002Fsrc\u002Fmain\">xml-java\u003C\u002Fa> •\n  \u003Ca href=\"\u002Fsamples\u002Fshared\u002Fsrc\u002Fmain\u002Fjava\u002Fnl\u002Fdionsegijn\u002Fsamples\u002Fshared\u002FPresets.kt\">presets\u003C\u002Fa>\n\u003C\u002Fp>  \n\n\u003Cp align=\"center\">\n  \u003Cimg width=300 src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F1636897\u002F147699597-2d177073-a2f8-4f49-ad7e-c390dd374557.gif\"\u002F>\n\u003C\u002Fp>\n\nConfigure your confetti using the Party configuration object. This holds all the information on how the confetti will be generated.\nAlmost all properties of a Party object have a default configuration! This makes it super easy to create beautiful and natural looking confetti.\n\n\nThe bare minimum you need is an **Emitter** to tell how often and how many confetti should spawn, like this:\n```kotlin\nParty(\n    emitter = Emitter(duration = 5, TimeUnit.SECONDS).perSecond(30)\n)\n```\n\n**But the possibilities are endless!** You can fully control how the confetti will be generated and behave by customizing the values of the Party object.\nAn example of a customized Party configuration is this:\n\n```kotlin\nParty(\n    speed = 0f,\n    maxSpeed = 30f,\n    damping = 0.9f,\n    spread = 360,\n    colors = listOf(0xfce18a, 0xff726d, 0xf4306d, 0xb48def),\n    position = Position.Relative(0.5, 0.3),\n    emitter = Emitter(duration = 100, TimeUnit.MILLISECONDS).max(100)\n)\n```\n_To learn more, see more samples linked at the top of [this section](#usage)_\n\n### Party options\n\n- `Angle` - **Int (default: 0)**: The direction the confetti will shoot. Use any integer between `0-360` or use presets like: Angle.TOP, Angle.RIGHT, Angle.BOTTOM, Angle.LEFT. Angle.RIGHT equates to `0` degrees, and larger values move clockwise from this position.\n- `spread` - **Int (default: 360)**: How wide the confetti will shoot in the direction of Angle. Use any integer between `0-360`. Use 1 to shoot in a straight line and 360 to form a circle\n- `speed` - **Float (default: 30f)**: The start speed of the confetti at the time of creation.\n- `maxSpeed` - **Float (default: 0f)**: Set to -1 to disable maxSpeed. A random speed between `speed` and `maxSpeed` will be chosen. Using randomness creates a more natural and realistic look to the confetti when animating.)\n- `damping` - **Float (default: 0.9f)**: The rate at which the speed will decrease right after shooting the confetti\n- `size` - **`List\u003CSize>` (default: SMALL, MEDIUM, LARGE)**: The size of the confetti. Use: Size.SMALL, MEDIUM or LARGE for default sizes or\n create your custom size using a new instance of `Size`.\n- `colors` - **`List\u003CInt>` (default: 0xfce18a, 0xff726d, 0xf4306d, 0xb48def)**: List of colors that will be randomly picked from\n- `shapes` - **`List\u003CShape>` (default: Shape.Square, Shape.Circle)**: Or use a custom shape with `Shape.DrawableShape`\n- `timeToLive` - **Long (default: 2000)**: The time in milliseconds a particle will stay alive after that the confetti will disappear.\n- `fadeOutEnabled` - **Boolean (default: true)**: If true and a confetti disappears because it ran out of time (set with timeToLive) it will slowly fade out. If set to falls it will instantly disappear from the screen.\n- `position` - **Position (default: Position.Relative(0.5, 0.5))**: the location where the confetti will spawn from relative to the canvas. Use absolute\n coordinates with `[Position.Absolute]` or relative coordinates between 0.0 and 1.0 using `[Position.Relative]`. Spawn confetti between random locations using `[Position.between]`.\n - `delay` - **Int (default: 0)**: the amount of milliseconds to wait before the rendering of the confetti starts\n - `rotation` - **Rotation (default: Rotation)**: enable the 3D rotation of a Confetti. See [Rotation] class for the configuration\n options. Easily enable or disable it using [Rotation].enabled() or [Rotation].disabled() and control the speed of rotations.\n - `emitter` - **EmitterConfig**: Instructions how many and how often a confetti particle should spawn. Use Emitter(duration, timeUnit).max(amount) or Emitter(duration, timeUnit).perSecond(amount) to configure the Emitter. \n\nSee Party implementation [here](\u002Fkonfetti\u002Fcore\u002Fsrc\u002Fmain\u002Fjava\u002Fnl\u002Fdionsegijn\u002Fkonfetti\u002Fcore\u002FParty.kt)\n\n### KonfettiView\n\nCreate a `KonfettiView` in your compose UI or add one to your xml layout depending on your setup.\n\nCompose\n```Kotlin\nKonfettiView(\n    modifier = Modifier.fillMaxSize(),\n    parties = state.party,\n)\n```\n\nView-based (xml)\n```xml\n\u003Cnl.dionsegijn.konfetti.xml.KonfettiView\n    android:id=\"@+id\u002FkonfettiView\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\" \u002F>\n```\n\n```kotlin\nParty(\n    speed = 0f,\n    maxSpeed = 30f,\n    damping = 0.9f,\n    spread = 360,\n    colors = listOf(0xfce18a, 0xff726d, 0xf4306d, 0xb48def),\n    emitter = Emitter(duration = 100, TimeUnit.MILLISECONDS).max(100),\n    position = Position.Relative(0.5, 0.3)\n)\nviewKonfetti.start(party)\n```\n\nAnd that's it! There are endless possibilities to configure the confetti. If you want to learn more on how to implement Konfetti in a java, xml or compose project then see the samples linked at the top of [this section](#usage)\n\n## Community\n\n- Follow me on twitter for updates [here](https:\u002F\u002Ftwitter.com\u002Fdionsegijn)\n- Do you have any questions or need help implementing this library? Search if your question is already asked [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fissues?q=is%3Aissue)\n- Or join our telegram chat group and maybe someone can help you out [here](https:\u002F\u002Ft.me\u002Fkonfetti_chat) \n\n## Contribute\n\nDo you see any improvements or want to implement a missing feature? Contributions are very welcome!\n- Is your contribution relatively small? You can, make your changes, run the code checks, open a PR and make sure the CI is green. That's it! \n- Are the changes big and do they make a lot of impact? Please open an issue [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fissues?q=is%3Aissue) or reach out and let's discuss.\n\nTake into account that changes and requests can be rejected if they don't align with the **purpose of the library**. To not waste any time you can always open an issue [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fissues?q=is%3Aissue) to talk before you start making any changes.\n\n### What is the purpose of this library?\nTo have a lightweight particle system to easily generate confetti particles to celebrate little and big moments. Even though this is a particle system the purpose is not to be a fully fledged particle system. Changes and features are meant to be in line with being a confetti library. A great example is the implementation of custom shapes by @mattprecious [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fpull\u002F129).\n\n## Report an issue\n\n- Did you find an issue and want to fix it yourself? See [Contribute](#contribute) for more information\n- Want to report an issue? You can do that [here](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fissues?q=is%3Aissue). By adding as much details when reporting the issue and steps to reproduce you improve the change it will be solved quickly. \n\n## License\n\nKonfetti is released under the ISC license. See [LICENSE](https:\u002F\u002Fgithub.com\u002FDanielMartinus\u002FKonfetti\u002Fblob\u002Fmain\u002FLICENSE) for details.\n","Konfetti 是一个轻量级的彩纸屑粒子系统库，用于在 Android 应用中庆祝大小时刻。它使用 Kotlin 编写，支持 Jetpack Compose 和 XML 布局，并且具有丰富的自定义选项，包括发射器配置、粒子速度和持续时间等，使得开发者能够轻松创建出自然美观的彩纸屑动画效果。适用于需要增强用户体验、增加趣味性和互动性的场景，如游戏成就解锁、用户完成任务后的奖励展示等。该库提供了默认配置以简化集成过程，同时也允许高级定制以满足特定需求。",2,"2026-06-11 03:11:59","top_language"]