前言
作为一名Web前端开发者,其实我很早以前就有学习安卓的想法了,因为感觉原生应用的体验真的很丝滑,能实现的功能好多, 但是以前只能用xml的方式开发安卓应用,我不喜欢这种开发体验,所以一直没去学。最近因为发现了Jetpack Compose
这个谷歌官方大力推荐的声明式的安卓原生UI框架,简单了解之后发现它和我之前使用的Web前端框架React
很相似,都是用函数来开发组件,都有state
、effect
的概念等,突然就跃跃欲试,并下定决心,在过去的3个月里全心在家学习安卓。
这是一个对我来说全新的领域,尽管我之前有一些Web前端
和Kotlin
的开发经验,但是安卓开发真的太复杂了,多了好多概念,而且很多地方和Web前端是很不一样的,一开始真的没有头绪。推动我学习的除了热情和兴趣,更重要的是我知道ChatGPT也许能帮我很大的忙,特别是对于我这种刚入门的,总是有十万个为什么。结果是它真的一直很细心、耐心地给我解答,就好像它有一个善良和博学的灵魂哈哈。当然除了ChatGPT,官网、Stack Overflow、Medium、Github、掘金、B站、公众号、Jetpack Compose 博物馆等都给我提供了很多的帮助,特别还有官方的Material3组件库源码。
Jetpack Compose
援引ChatGPT对它的介绍:
Jetpack Compose 是一个用于构建 Android 应用程序的声明式 UI 框架。与传统的基于 XML 的布局方式不同,Jetpack Compose 允许开发者使用 Kotlin 语言来描述 UI 的结构和行为。这种声明式的方法使得 UI 的构建更加直观和灵活。
使用 Jetpack Compose,开发者可以通过简洁的代码定义 UI 组件的外观和交互,而不需要编写大量的样板代码。此外,Jetpack Compose 提供了强大的组件化和复用机制,使得开发者可以更好地管理和维护复杂的 UI 结构。
Jetpack Compose 还具有与现有 Android 生态系统的无缝集成能力,开发者可以将其与传统的 Android UI 框架混合使用,逐步迁移现有的应用程序,而无需进行大规模的重构。 总的来说,Jetpack Compose 提供了一种现代化、高效和易于使用的方式来构建 Android 应用程序的用户界面,为开发者带来了全新的开发体验和更好的用户体验。
在国外,已经有很多大公司都在用Jetpack Compose开发APP了,包括不限于:X(Twitter)、ChatGPT(几乎完全用Compose实现)、谷歌旗下的大部分APP,国内也有微信、微信读书、微博、一刻相册等app部分用到。今天,我想分享我这几个月来开发的第一个安卓项目------WeUI。
WeUI
WeUI原本是微信官方推出的Web UI组件库,它专为移动端的网页和小程序设计,简洁优雅的设计风格是我选择模仿这个项目的主要原因,还有很重要的一点是在浏览器中打开weui.io就能够通过检查元素轻松获取到各种设计参数,如颜色、字体大小、宽高和边距等。但是为了能够尽可能全面地接触到原生安卓开发的各个方面,我以WeUI为基础,扩展了一大批安卓端特有的硬件和系统层面的功能示例,以及一些特定功能的UI界面,主要目的就是希望尽可能快速全面地熟悉安卓开发的各个方面。
在这个过程中,我遇到了许多挑战,但也学到了很多宝贵的经验。为了让更多的开发者,特别是像我这种从前端转过来的新手和没有接触过Jetpack Compose的安卓开发者少走弯路,我决定将代码全部开源!作为一名新手,可能有很多写的不好甚至不对的地方,希望大家多多指正,一起进步!
项目说明
- 根据官方指引,项目采用模块化设计
- 所有依赖尽可能用最新的版本
- 尽最大可能减少外部依赖
- 界面全部适配深色模式
源码&安装包
功能介绍
部分界面演示
首页
基础组件
表单组件
媒体组件
操作反馈
系统服务
网络服务
硬件接口
图标组件
二维码
地图组件
扩展示例
注:
- 全景图片、太阳系动画的设计和素材来自
MDN
:developer.mozilla.org/zh-CN/docs/... - DropCard、Paint参考了
ComposeCookBook
:github.com/Gurupreet/C... - FileBrowser参考了
MIUI
自带的文件管理器 - CubicBezier、DigitalKeyboard、DigitalRoller、DividingRule、OrgTree等参考了小程序
ThorUI
- 其它参考了
WeUI
、微信
、小程序示例
、uni-app
等 - 细节比较多,光代码提交次数就超过了250次,有些功能没有一一列举,欢迎大家下载体验,交流分享
- 因为依赖版本非常新,如果要运行代码请下载最新的AndroidStudio,最好配置代理或国内镜像仓库,以便更顺畅地下载依赖
其它项目分享
最后和大家分享几个我之前写的web项目:
mishop-ui
精仿小米商城,基于react18+vite+ts
预览:chengdongqing.gitee.io/mishop-ui
mishop-api小米商城后端,基于springboot3+gradle+kotlin
源码:gitee.com/chengdongqi...
xiaopeng精仿小鹏官网,基于vue3+vite+ts
莱布尼兹说:
唯有相互交流我们各自的才能,才能共同点燃我们的智慧之灯。
完 ^_^