# Owl
**Repository Path**: wang_qichen12138/Owl
## Basic Information
- **Project Name**: Owl
- **Description**: 智能移动开发FinalProject
- **Primary Language**: Kotlin
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: https://gitee.com/wang_qichen12138/Owl
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-05-14
- **Last Updated**: 2024-05-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Owl
此项目是一个使用Jetpack Compose实现的Owl,一个非遗文化相关文章展示app。
要尝试这个示例应用程序,请使用稳定版本的Android Studio。您可以克隆这个仓库或者在Android Studio中导入项目,按照这里的步骤进行操作。
这个示例展示了:
* Material主题设计 和 浅色/深色主题
* 自定义布局
* 动画
## 截图
## 特点
#### [介绍屏幕](app/src/main/java/com/example/owl/ui/onboarding)
屏幕允许用户通过选择主题来自定义他们的界面。值得注意的功能包括:
* [自定义交错网格布局](app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt#L239).
* [主题切片](app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt#L171) 使用用户 [自定义选择动画](app/src/main/java/com/example/owl/ui/onboarding/Onboarding.kt#L157).
#### [文章屏幕](app/src/main/java/com/example/owl/ui/courses)
文章屏幕展示了已有非遗文章,以及一个搜索屏幕。值得注意的功能包括:
* 自定义 [`StaggeredVerticalGrid`](app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt#L161) 根据可用空间响应式布局。
* [`FeaturedCourse`](app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt#L70) 可组合演示了对 [`ConstraintLayout`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/package-summary.html#ConstraintLayout(androidx.compose.ui.Modifier,%20kotlin.Function1)) 的使用。
#### [文章详情屏幕](app/src/main/java/com/example/owl/ui/course/CourseDetails.kt)
显示所选文章的详情,包括:
* 一个可点击或拖动的 [浮动操作按钮](https://material.io/components/buttons-floating-action-button) 可以转换成一个 [`LessonsSheet`](app/src/main/java/com/example/owl/ui/course/CourseDetails.kt#L309).
* 一系列使用嵌套BlueTheme的 [`RelatedCourses`](app/src/main/java/com/example/owl/ui/course/CourseDetails.kt#L262) 。
#### [主题设计](app/src/main/java/com/example/owl/ui/theme)
Owl遵循Material Design,自定义了 [颜色](app/src/main/java/com/example/owl/ui/theme/Color.kt), [排版](app/src/main/java/com/example/owl/ui/theme/Type.kt) and [形状](app/src/main/java/com/example/owl/ui/theme/Shape.kt). 这些在Owl的多个 [主题](app/src/main/java/com/example/owl/ui/theme/Theme.kt)中汇聚在一起,每个颜色方案有一个主题。 此外,Owl支持 [图片](app/src/main/java/com/example/owl/ui/theme/Images.kt) 和 [高程](app/src/main/java/com/example/owl/ui/theme/Elevation.kt) 主题设计, 在浅色/深色主题中提供备用图片/高程。
#### [通用UI](app/src/main/java/com/example/owl/ui/common)
Compose使创建组件库并在整个应用程序中使用它们变得简单。详情见:
* [`CourseListItem`](app/src/main/java/com/example/owl/ui/common/CourseListItem.kt) 被使用于 [文章列表](app/src/main/java/com/example/owl/ui/courses/MyCourses.kt) 屏幕 和 [文章详情](app/src/main/java/com/example/owl/ui/course/CourseDetails.kt) 屏幕中的相关部分。
* [`OutlinedAvatar`](app/src/main/java/com/example/owl/ui/common/OutlinedAvatar.kt) 被使用于 [文章分块](app/src/main/java/com/example/owl/ui/courses/FeaturedCourses.kt) 屏幕 和 [文章详情](app/src/main/java/com/example/owl/ui/course/CourseDetails.kt) 屏幕。
#### [实用工具](app/src/main/java/com/example/owl/ui/utils/)
Owl实现了一些有趣的实用功能:
* [惰性布局](https://developer.android.com/jetpack/compose/lists) - 特别是LazyColumn和LazyRow,传递 [item keys](https://developer.android.com/jetpack/compose/lists#item-keys) 并使用 [`animateItemPlacement()`](https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/LazyItemScope#(androidx.compose.ui.Modifier).animateItemPlacement(androidx.compose.animation.core.FiniteAnimationSpec))。
* [窗口插图](https://developer.android.com/reference/kotlin/androidx/compose/foundation/layout/WindowInsets) 由Compose Foundation库提供。
* [NavGraph](app/src/main/java/com/example/owl/ui/NavGraph.kt) 使用 [Jetpack Navigation](https://developer.android.com/jetpack/compose/navigation) 模拟应用程序内的导航。
#### [ChatBot]()
实现了基于传统文化知识的聊天机器人。
## 数据
领域类型在 [model包](app/src/main/java/com/example/owl/model) 中进行建模,每个类型包含使用虚假`Repo`对象暴露的静态示例数据。
本项目使用的图床为 [聚合图床](https://www.superbed.cn/), 并使用 [coil][coil] 加载。
## 开源
[owl]: https://gitee.com/wang_qichen12138/Owl