# WanAndroid_compose **Repository Path**: 710094048/WanAndroid_compose ## Basic Information - **Project Name**: WanAndroid_compose - **Description**: 玩安卓项目。compose。自写。 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [掘金文档](https://juejin.cn/post/7571351275977556019) # 介绍 本项目是玩安卓compose版,主要用来学习compose的写法。\ 业务功能都是简单的,偏重ui使用,使用玩安卓的开放api和一些自造假数据。有些功能是不完整的。\ 希望能在大家学习compose过程中提供帮助。也能获得反馈,让自己进步。 # 预览 首页 项目页 外卖 # 技术栈 * kotlin * compose * flow。就简单一用,viewmodel中发个消息。 * [coil](https://github.com/coil-kt/coil/blob/main/README-zh.md) 网络图片加载库 * [Chucker](https://github.com/ChuckerTeam/chucker) 网络接口抓包查看库 * 原生navigation导航。整体只有一个activity。对于compose而言,确实适合单一activity,不要排斥。 * Exoplayer。 视频播放 * retrofit+okhttp+协程 * compose各种预览。compose的预览确实方便。 * 主题,深色模式。这里深色模式只适配了少数页面。深色模式的适配是个麻烦活,但是逻辑已经ok了。 # 主要功能 * 首页。文章列表,banner,下拉刷新上拉加载更多。 * 项目页。tab搭配pager实现多页列表。 * 外卖页。仿美团外卖蜜雪冰城页,左右双列联动,整体嵌套滑动效果处理。 * 商品页。双列网格布局和双列瀑布流布局。 * 客服页。仿照常见的聊天页,有表情,能输入文字。 * 抖音页。仿抖音上下滑动视频播放,有视频缓存和播放进度记录,切换播放比较流畅。 * 手写签名页。Canvas绘制。不得不说compose的绘制比原生写法简单易懂多了。 # 体会 * compose写ui比原生快捷很多,而且官方ui组件很多能直接用,不像原生xml写法时官方ui组件大部分没法用,都得第三方和自写。由于compose使用纯代码编写ui,使得ui的灵活性变强,配合上预览功能,写ui确实很方便。实现边框、圆角、列表、吸顶布局、触摸、滑动、绘制这些都更简便。跟Android原生view也能完全互相用,用法很简单。后续还有Kotlin Multiplatform来助力实现跨平台的优势。 * 但是它也有一些缺点,必须得会kotlin和协程,理解声明式ui和状态变量的更新机制,ui代码里嵌套了很多状态变量,尤其是业务复杂的时候,我觉得代码可读性和可维护性糟糕,倒腾各状态变量关系时头大。典型的写的人觉得很痛快,维护的人一个劲的骂。还有compose的副作用函数,比较像生命周期的概念,但是不一样,比较不好理解,api也多,有点乱套,有时写完都不知道对不对。viewmodel创建推荐用hilt依赖注入,但是我不喜欢依赖注入,感觉代码面目全非,本项目没用。 * 总体而言我觉得compose优点大于缺点,之后会是大势所趋,发展越来越好。 # 代码 # 安装包 ![image.png](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/15cc662789d14f5d8a547a32fe0fffb0~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5aSa5byX5pyX5piO5ZOlMQ==:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTI3NTA4OTIyMDI4NTA4NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1771320175&x-orig-sign=EBx28MxTs0oQdig1m6YQbm37ipA%3D) ## 📁 项目结构 ```text app/src/main/java/com/lcz/wanandroid_compose/ ├── base/ # 基础类:BaseViewModel, BaseResponseBean ├── data/ # 数据层:Repository, DataSource, 缓存管理 ├── module/ # 功能模块 │ ├── main/ # 首页、个人中心、项目Tab │ ├── login/ # 登录模块 │ ├── search/ # 搜索模块 │ ├── coin/ # 积分相关 │ ├── ticktok/ # 抖音视频模块 │ ├── demo/ # 各类功能演示 (Alarm, Calendar, etc.) │ └── ... ├── net/ # 网络配置:RetrofitManager, Interceptor ├── navigation/ # 导航图配置 ├── theme/ # 主题配置 ├── widget/ # 通用自定义组件 (Banner, BottomBar, RefreshableList) └── util/ # 工具类 (SPUtil, LogUtil, ToastUtil) ``` ## 🚀 环境配置 * **JDK**: JDK 21.0.8 或更高版本。 * **Gradle**: Gradle 8.13 (具体版本请参考 `gradle/wrapper/gradle-wrapper.properties`)。 * **Android Studio**: Android Studio Otter 3 Feature Drop | 2025.2.3 或更高版本。 * **Android SDK**: compileSdk 36 ## 📄 License 本项目基于 MIT License 开源。 ---