android-jetpack-demo

Introduction: 🔥 快速入门 Android Jetpack 以及相关 Kotlin、RxJava、MVVM 等主流技术,独立构架 App 的基础技能
More: Author   ReportBugs   OfficialWebsite   
Tags:

android-jetpack-demo

jetpack apache2.0 SonarCloud codebeat badge GitHub repo size GitHub Release Date version GitHub last commit GitHub commit activity Hits

Alt

目录

一、项目简介

不觉间项目已六年有余,Kotlin 和 Jetpack 相关技术点也更新了很多,更成了为 Android 开发的技术首选。 GitHub上不乏很多starJetpack最佳实践,此项目定位于新手入门级教程,分组件逐步学习,明白其应用与原理,而后方可谈组合与架构。 学习主要以项目代码为准,主要分三个部分模块:

  1. kotlin 文件夹,下面是面向 kotlin 语言的初学教程,基本语法;学习之后,可以看懂 kotlin 代码,以及上手写 kotlin,相信你用上 kotlin 之后,绝对不会再用回 java。
  2. jetpack 文件夹下,主要演示了通用的几个 jetpack 的组件 liveData、lifecycle、viewmodel、paging、workmanager、navigation,databinding、room 等。
  3. compose 算是颠覆性或者革命性的一个 Android UI 的编写方式,我说的可能有点夸张,但是这种组合式的 UI 写法和设计思想,真的很不一样,用起来也没有了 Android 旧的 view 体系的那种臃肿感。
  4. 其他 MVI,MVVM 和 jetpack 的组件,可能会简便或者功能的形式,添加的 App demo 的功能块中。项目断断停停的,工作精力所限,希望可以动手给 star/fork 点个赞👍,有什么问题想法和建议可以提 issue,谢谢,您的支持与鼓励,是我做项目的动力
感谢支持的各位小伙伴,有技术问题或学习问题都可以在 issues 中留言

Android-Jetpack-Demo 全新设计开发中,会集合当下 Android 应用开发的 Kotlin 语言相关技术知识点、Jetpack 各组建的使用及相关原理源码分析文章等。

代码清理全新设计中,所以为空项目,历史代码可参照source这里下载。

二、更新日志

  • 2.0.0(2024 年 3 月 14 日) ing…

    • 全新架构设计模块化分组演示 Jetpack 重要组件的功能使用,以及 MVI 架构和组件化、项目构建等
    • 使用composeUI框架

    compose roadmap

  • v1.1.0(2019 年 6 月 27 日)

    • 更新AndroidStudio以及Gradle编译版本
    • 更新jetpackkotlin版本为当前最新
    • 压缩存档,以备模块化版本
    • kotlin初级语法的基础博文
  • v1.0.0(2018 年 11 月 14 日)

    • 实现jetpack组件的初级基础用法的演示
    • dagger2的基础用法演示
    • kotlin初级语法的整理注释
    • databinding的基础用法
    • AAC的初级使用

三、Sample 示例(1.x 版本的)

下载体验 apk 或者手机扫描二维码下载Demoapk包;最新apk可下载代码自行构建。

扫描下载

四、项目组成[^1]

项目主要简单的演示Android 当前应用开发层面的前沿技术与框架库使用, kotlin 语法及进阶,协程Coroutineskotlin flow 简明笔记 的分析及使用,以及Compose 学习随笔 的组件的进阶使用,MVI/MVVM 架构的实现,后续会添加模块化与组件化的项目演示。

  • kotlin分包,主要演示语法基础,快速上手; Kotlin 语法拾遗
    • basic 基础语法速览
    • concepts 语法概念基础详解
    • collections 集合相关的操作符解释
    • coroutines 协程相关的概念和操作符演示
    • flow&channel
  • jetpack Jetpack 笔记速览 分包下面会演示livedatalifecycleviewmodeldatabindingpagingworkmanagernavigationroom 等核心库的使用与解析;
  • compose分包下会详细演示compose的学习笔记,从基础到整个 UI 实现;

在示例代码中会插入MVIMVVM的架构实现。

五、示例内容

  • Kotlin语法及部分博文Kotlin
package org.zhiwei.kotlin.basic

//region Kotlin 语言的基础语法

//0. 前言:所有编程语言的变量,命名,路径之类的,最好都是纯英文字母和标点符号,切记,可避免日后编程输入的一些问题

//1. 类似于 Java 语言,包声明处于文件顶部(可以在版权声明注释之后),如上 package org.zhiwei.kotlin.basic 的包名;一般用唯一域名倒置方式区分;

//2. 程序入口点 main 函数,类似于 Java ,其中 args 的形参部分可以不写
fun main(args: Array<String>) {
    //3. 输出打印信息到控制台
    print("输出打印文字,该函数不换行")
    println("Hello world")//换行
}

//4. 函数: 定义函数使用关键字 fun 格式:fun 函数名(参数名:参数类型,等等):返回参数类型{ .... return xxx } ;
// 在函数定义处方法(或者叫做函数)入参的参数名称,成为形参,调用该函数的时候,传入的参数具体,叫做实参。
private fun sum(a: Int, b: Int): Int {
    return a + b
}

//4.1 kotlin 支持表达式和语法推导,如上的函数可简写为: fun sum(a: Int, b: Int) = a + b
//4.2 若返回类型为 Unit,空,类似于 Java 中的 void,则可以省略不写
private fun printSum(a: Int, b: Int) {//此处后面标准格式为:Unit 的返回类型
    //在 String 字符串中,可使用$符号调用函数或者变量,此时上面的 sum 函数,传入 3,5 两个参数就是实参,函数定义的 a,b 叫做形参
    println("打印 3+5 的计算和: ${sum(3, 5)}")
}

//5. 变量 使用 var 定义可变量; val 定义局部或区域内的不可变量,其只能赋值一次;变量的声明格式 var/val 变量名:变量类型 = 值 。可省略类型,如果能够自动推导的。或者可以延迟初始化。
var name: String = "Kotlin"//可变量,name 可以被多次赋值
private val platform: String = "Android" //不可变量,在作用域内被一次赋值之后,不可再改
const val PI: Double = 3.14 //常量,类似于 Java 的 static final  其存放在 Jvm 的静态常量区,调用使用类名. 或者直接导入。

//6. 不同于 Java 文件,在 Kotlin 的 kt 文件中,可以直接在文件内声明函数,变量,常量,类等定义,而不是 Java 那种必须在某个类中定义。且一个 kt 文件可以定义多个 public 的类。
//6.1 kotlin 中定义函数,变量,类,接口等,如果在文件层级,权限修饰符默认是 public,则会省略不写。类与函数默认是 final 的。
//7. 类定义格式 class 类名(参数):父类,接口 。类定义可继承父类,实现接口,如果最简化,则如下,class 类名 即可。
public class QuickSyntax //默认前面有修饰符 public 的,省略不写

interface Shape

//7.1 相对完整的类定义的格式,实现接口
private class Rectangle(var height: Double, var length: Double) : Shape {
    //类内部定义的属性,
    var perimeter = (height + length) * 2
}
//更多的详见代码 ......

更多详情,请下载代码,内有详细注释,鉴于本人才学有限,若有不足之处,请大神不吝赐教

六、关于作者 jianshugithubcsdn

作者本人只是一个,就职于某知名(@_@ 有名字的)互联网公司的,技术小白一枚,对于编程有着某种兴趣和热爱,然技术确实渣渣,好读书、不求甚解~~

人之为学有难易乎、为之,则难者亦易矣;不为,则易者亦难矣。

倘若本项目对你有一丝丝的帮助和价值,烦请给个star,或者有什么好的建议或意见,也可以发个issues,谢谢!:happy:

  • Donationsdonation

    测试一下Github爱心💗sponsor功能,说不定您心血来潮了呢😂

    imgalipay

  • 感谢以下捐助者,您的鼓励更是我的动力。

    01020304050607anjingbeiyingchuifengfeizhaihaizeipandapigyayayijia

Github starsGithub followersGithub issues

  • License
Copyright 2018--2024 iOrchid

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

  http://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.

Stargazers over time

[^1]: 为研究最新Jetpack组件的版本和特性,项目当前(2024/03/14)开发环境为AndroidStudio Iguana 2023.2.1gradle 8.3.0Jdk17Kotlin 1.9.22 [^2]: 项目使用AS及相关环境配置可能与你本地不同,参照 配置 gradle [^3]: 参照Compose项目有compose cookbookcompose tutorial,compose codelab,compose sample 致敬感谢

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools