This sample is a Jetpack Compose implementation of Owl, a Material Design study.
To try out this sample app, use the latest stable version of Android Studio. You can clone this repository or import the project from Android Studio following the steps here.
This sample showcases:
The onboarding screen allows users to customize their experience by selecting topics. Notable features:
The courses screen displays featured and saved course and a search screen. Notable features:
StaggeredVerticalGrid
responsive to available size.FeaturedCourse
composable demonstrates usage of ConstraintLayout
.Displays details of a selected course, featuring:
LessonsSheet
.RelatedCourses
using a nested BlueTheme
.Owl follows Material Design, customizing colors, typography and shapes. These come together in Owl’s multiple themes, one for each color scheme. Additionaly, Owl supports image and elevation theming, providing alternate images/elevations in light/dark themes.
Compose makes it simple to create a library of components and use them throughout the app. See:
CourseListItem
is used on both the My Courses screen and in the related section of the Course Details screen.OutlinedAvatar
is used on both the Featured Courses screen and the Course Details screen.Owl implements some utility functions of interest:
animateItemPlacement()
.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 Pravatar and loaded using coil.
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.