167 lines
7.0 KiB
Markdown
167 lines
7.0 KiB
Markdown
# Why Not Compose!
|
|
|
|
A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose
|
|
cookbook or play-ground if you want!
|
|
|
|
Feel free to request features or suggestions for improvements.
|
|
|
|
[](https://github.com/ImaginativeShohag)
|
|
[](https://www.buymeacoffee.com/ImShohag)
|
|
[](https://github.com/ImaginativeShohag/Why-Not-Compose/releases)
|
|
[](https://play.google.com/store/apps/details?id=org.imaginativeworld.whynotcompose)
|
|

|
|
[](https://ktlint.github.io/)
|
|
|
|
## Notable Features & Libraries
|
|
|
|
- MVI Pattern
|
|
- Navigation Component
|
|
- Hilt
|
|
- Everywhere dark mode support
|
|
- A lot of Ready to use compositions
|
|
- Gradle Kotlin DSL
|
|
- CI/CD
|
|
- ktlint
|
|
- CodeQL
|
|
- Publish to Google Play
|
|
- Material 3 examples
|
|
- Animated Splash Screen (Introduced in Android 12)
|
|
|
|
[<img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" style="width:256px">](https://play.google.com/store/apps/details?id=org.imaginativeworld.whynotcompose)
|
|
|
|
## Screenshots
|
|
|
|
### Animations
|
|
|
|
| <img src="images/animated-text-and-bubbles.gif" style="width:320px"> | <img src="images/the-story.gif" style="width:320px"> | <img src="images/running-car.gif" style="width:320px"> |
|
|
|:--------------------------------------------------------------------:|:----------------------------------------------------:|:------------------------------------------------------:|
|
|
| <img src="images/emudi.gif" style="width:320px"> | | |
|
|
|
|
### Compositions
|
|
|
|
|  |  |  |
|
|
|:---------------------------------------:|:----------------------------------:|:----------------------------------------:|
|
|
|  |  |  |
|
|
|  |  |  |
|
|
|  |  |  |
|
|
|  |  |  |
|
|
|  | | |
|
|
|
|
### UIs
|
|
|
|
|  |  |  |
|
|
|:-------------------------------:|:--------------------------------------:|:-------------------------------:|
|
|
|
|
### Tutorials
|
|
|
|
- Counter (Beginner)
|
|
- Counter with ViewModel (Beginner)
|
|
- AnimatedVisibility (Beginner)
|
|
- Lottie (Beginner)
|
|
- Select image and crop for upload (Intermediate)
|
|
- Capture image and crop for upload (Intermediate)
|
|
- Permission (Beginner)
|
|
- Data Fetch and Paging (Advanced)
|
|
- Tic-Tac-Toe (Advanced)
|
|
- OneSignal and Broadcast (Intermediate)
|
|
- ExoPlayer (Advanced)
|
|
- CMS (Advanced)
|
|
|
|
|  |  |  |
|
|
|:------------------------------------:|:------------------------------------------------------:|:----------------------------:|
|
|
|  |  |  |
|
|
|
|
# TODO
|
|
|
|
- [x] Add new Google Map Compose library
|
|
- [x] Add compose BOM: https://developer.android.com/jetpack/androidx/releases/compose
|
|
- [x] Refactor to Gradle Plugins
|
|
- [x] Add notification permission
|
|
- Migrate to Material 3
|
|
- [x] CMS
|
|
- [ ] Full app
|
|
- [ ] Add accompanist WebView
|
|
- [ ] x, y, z translation simulation
|
|
- [ ] Shadow manipulation with device gyroscope
|
|
- [ ] Composition: Bottom Sheet
|
|
- [ ] Fix custom `LazyGridScope.items`
|
|
- [ ] List with `LazyGrid`
|
|
- [ ] Paging with `LazyGrid`
|
|
- [ ] Update to new storage permission
|
|
- CMS
|
|
- [ ] Add screenshot for CMS module
|
|
- [ ] CMS module: UI Testing
|
|
- [ ] Auto Theme mode from system
|
|
- [ ] Create color ready for dark and light mode
|
|
|
|
# Note
|
|
|
|
- For dependency version check I am currently
|
|
using [Gradle Versions Plugin](https://github.com/ben-manes/gradle-versions-plugin#using-a-gradle-init-script)
|
|
. I added this in the Gradle init script and can check versions using the following commend.
|
|
|
|
```bash
|
|
./gradlew dependencyUpdates
|
|
```
|
|
|
|
- The project using [spotless](https://github.com/diffplug/spotless/tree/main/plugin-gradle)
|
|
with [klint](https://github.com/pinterest/ktlint). Apply spotless using the following command.
|
|
|
|
```bash
|
|
./gradlew spotlessApply
|
|
```
|
|
|
|
## Setup
|
|
|
|
### Map API Key
|
|
|
|
Open the `local.properties` in your project level directory, and then add the following code.
|
|
Replace `YOUR_API_KEY` with your API key.
|
|
|
|
```groovy
|
|
MAPS_API_KEY=YOUR_API_KEY
|
|
```
|
|
|
|
### Go REST API Key
|
|
|
|
Open the `local.properties` in your project level directory, and then add the following code. Replace `YOUR_API_KEY` with your [Go REST](https://gorest.co.in) API key.
|
|
|
|
```groovy
|
|
CMS_API_KEY=YOUR_API_KEY
|
|
```
|
|
|
|
## Other Interesting Repos
|
|
|
|
- [Compose Material Catalog](https://github.com/androidx/androidx/tree/androidx-main/compose/integration-tests/material-catalog)
|
|
- [Official Compose Samples](https://github.com/android/compose-samples)
|
|
- [Now in Android App](https://github.com/android/nowinandroid)
|
|
- [ChrisBanes/Tivi](https://github.com/chrisbanes/tivi)
|
|
- [Gurupreet/ComposeCookBook](https://github.com/Gurupreet/ComposeCookBook)
|
|
- [spencergriffin/exoplayer-compose](https://github.com/spencergriffin/exoplayer-compose)
|
|
- [godaddy/compose-color-picker](https://github.com/godaddy/compose-color-picker)
|
|
- [Jetpack Compose Awesome](https://github.com/jetpack-compose/jetpack-compose-awesome)
|
|
|
|
## Credits
|
|
|
|
- [Android official compose samples](https://cs.android.com/androidx/platform/tools/dokka-devsite-plugin/+/master:testData/compose/samples/)
|
|
- [Iconly icon](https://freebiesbug.com/figma-freebies/iconly/)
|
|
|
|
## Licence
|
|
|
|
- **Emudi** is a trademark of [Softzino Technologies](https://softzino.com/).
|
|
|
|
```
|
|
Copyright 2021 Md. Mahmudul Hasan Shohag
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
``` |