# TmdbApp
**Repository Path**: SmileSB101/tmdb-app
## Basic Information
- **Project Name**: TmdbApp
- **Description**: 借助TMDB 电影网站 API接口 使用Compose 编写的APP(技术栈: jetpack Compose Hilt Navigation Retrofit Kotlin Courutines
- **Primary Language**: Android
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2024-01-07
- **Last Updated**: 2024-01-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### QQ交流群 818035093
---
## 项目介绍
> 这是一款采用 [TMDB](https://www.themoviedb.org/) 开放API构建的电影介绍APP
### 演示视频

UI 使用纯 [Jetpack Compose](https://developer.android.google.cn/jetpack/compose) 编写 并遵循Google官方的MVVM单项数据流架构
+ 应用分为两个层:
- 界面层 - 在屏幕上显示应用数据。
- 数据层 - 包含应用的业务逻辑并公开应用数据。

### 界面层
---
界面层(或呈现层)的作用是在屏幕上显示应用数据。每当数据发生变化时,无论是因为用户互动(例如按了某个按钮),还是因为外部输入(例如网络响应),界面都应随之更新,以反映这些变化。
+ 界面层由以下两部分组成:
- 在屏幕上呈现数据的界面元素。您可以使用 View 或 Jetpack Compose 函数构建这些元素。
- 用于存储数据、向界面提供数据以及处理逻辑的状态容器(如 [ViewModel](https://developer.android.google.cn/topic/libraries/architecture/viewmodel) 类)。
---

### 数据层
---
应用的数据层包含业务逻辑。业务逻辑决定应用的价值,它包含决定应用如何创建、存储和更改数据的规则。
数据层由多个代码库组成,其中每个代码库可包含零到多个数据源。您应该为应用中处理的每种不同类型的数据分别创建一个存储库类。例如,您可以为与电影相关的数据创建一个 MoviesRepository 类,或者为与付款相关的数据创建一个 PaymentsRepository 类。
---

#### 项目结构:
>com.dubito.tmdbmovie.data - 数据层
com.dubito.tmdbmovie.ui.screen - ui层
### 技术栈
> kotlin 编写的Compose页面
UI组件 用的 最新版material3
systemuicontroller 控制页面沉浸式状态栏
Retrofit 网络请求
HiltDagger 依赖注入
Coil 图片加载
> navigation 用于导航
timber 记录网络日志
paging 数据分页
splashscreen 加载启动页
> viewModel 数据持有使用Flow流式数据处理 (直接弃用LiveData)
### 效果图
- 亮色模式

- 深色模式


