Jetsnack is a sample snack ordering app built with Jetpack Compose.
To try out this sample app, you need to use the latest Canary version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample showcases:
- How to implement a custom design system
- Custom layout
- Animation
Jetsnack is still under development and some screens are not yet implemented.
Jetsnack's major feature is demonstrating how to implement a custom design system. Jetsnack has a bespoke color system and does not use Material color theming.
This is implemented by:
JetsnackColorPalette
a class modelling the desired color system.JetsnackColorAmbient
an ambient holding the current color set.ProvideJetsnackColors
a composable function providing aJetsnackColorPalette
JetsnackTheme
object, providing convenient access to the current theme colors.JetsnackTheme
composable, the app's theme. Note that while Jetsnack implements a custom color system, it still uses Material's shape and type theming.
Jetsnack wraps Material components, customizing them to use its color system. See the components package e.g. JetsnackButton
. Jetsnack makes heavy use of gradients, see Gradient
for a number of helpful Modifier
s.
Jetsnack utilizes custom Layout
s to achieve its design. See:
CollapsingImageLayout
shown above.SearchCategory
custom positioning of an image and text items.JetsnackBottomNavLayout
a custom Bottom Navigation implementation which animates the width of selected/unselected items.
Domain types are modelled in the model package, each containing static sample data exposed using fake Repo
s objects.
Imagery is sourced from Unsplash and loaded using coil-accompanist.
Copyright 2020 The Android Open Source Project
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
https://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.