Skip to content

Commit

Permalink
更新readme,清理无用资源
Browse files Browse the repository at this point in the history
  • Loading branch information
iOrchid committed Mar 17, 2024
1 parent b6852d3 commit da43646
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 83 deletions.
111 changes: 57 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@

#### 一、项目简介

> 不觉间项目已近五年,Kotlin和Jetpack相关技术点也更新了很多,更成了为Android开发的技术首选。
> `GitHub`上不乏很多`star``Jetpack`最佳实践,此项目定位于新手入门保姆级教程,分组件逐步学习,明白其应用与原理,而后方可谈组合与架构。
> 不觉间项目已六年有余,Kotlin和Jetpack相关技术点也更新了很多,更成了为Android开发的技术首选。
> `GitHub`上不乏很多`star``Jetpack`最佳实践,此项目定位于新手入门级教程,分组件逐步学习,明白其应用与原理,而后方可谈组合与架构。
> 学习主要以项目代码为准,主要分三个部分模块:
>
> 1. kotlin文件夹,下面是面向kotlin语言的初学教程,基本语法;学习之后,可以看懂kotlin代码,以及上手写kotlin,相信你用上kotlin之后,绝对不会再用回java。
Expand Down Expand Up @@ -60,78 +60,81 @@
- `databinding`的基础用法
- `AAC`的初级使用

#### 三、Sample示例(这是以前老版本的)
#### 三、Sample示例(1.x版本的)

[下载体验apk](https://raw.githubusercontent.com/iOrchid/android-jetpack-demo/master/docs/apk/app-release.apk)或者手机扫描二维码下载`Demo``apk`
[下载体验apk](https://raw.githubusercontent.com/iOrchid/android-jetpack-demo/master/docs/apk/app-release.apk)
或者手机扫描二维码下载`Demo``apk`包;最新`apk`可下载代码自行构建。

![扫描下载](./docs/images/QR_Jetpack.png)

#### 四、项目组成[^1]

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

#### 五、示例内容(1.x版本部分)
- **kotlin**分包,主要演示语法基础,快速上手;
- basic基础语法速览
- concepts语法概念基础详解
- collections集合相关的操作符解释
- coroutines协程相关的概念和操作符演示
- flow&channel
- **jetpack**
分包下面会演示`livedata``lifecycle``viewmodel``databinding``paging``workmanager``navigation``room`
等核心库的使用与解析;
- **compose**分包下会详细演示`compose`的学习笔记,从基础到整个UI实现;

![databinding](./docs/images/databinding.png)![lifecycle](./docs/images/lifecycle.png)![logcat](./docs/images/logcat.png)
在示例代码中会插入`MVI``MVVM`的架构实现。

#### 五、示例内容

- `Kotlin`语法及部分博文[Kotlin](https://www.jianshu.com/p/bdbe2ab6e9b2)

```kotlin
package org.zhiwei.jetpack.kt.base

/**
* 作者: 志威
* 主页: Github: https://github.com/iOrchid
* 日期: 2019年09月19日 11:13
* 签名: 天行健,君子以自强不息;地势坤,君子以厚德载物。
* You never know what you can do until you try !
* ----------------------------------------------------------------
* Kotlin的类与对象的相关定义与信息
* 1、kotlin中class定义类,默认都是public的,而且是final 的,不可继承
* 2、若要可继承,就需要open关键词修饰
* 3、一个kt文件中可以多个class,以及混合top level的变量/常量/函数的定义
* 4、默认定义的class是final的,其内部的变量/函数,也就不必要使用protected的权限,其作用也就相当于private了。
* 5、每个class类都有一个伴生静态object类companion object 在class加载的时候就初始化了,作为类的静态成员存在。(object类,自身是没有伴生类的)
* 6、kotlin不同于java,一般的声明成员属性,不用getter/setter,当然除非你要控制只能getter不能setter,那样就需要重写
* 7、在class定义函数和top level中差不都,也就是protected这个权限符号的区分。默认函数也是final的。
*/
public final class KtClazz {

//<editor-folder desc="类的构造函数的讲解模块">
package org.zhiwei.kotlin.basic

constructor()//默认class类都有一个的无参构造函数
//region Kotlin语言的基础语法

constructor(name: String)//这样写三个构造函数,属于平级,所以不需要依次调用。倘若在上面class KtClazz后添加了构造函数
//0. 前言:所有编程语言的变量,命名,路径之类的,最好都是纯英文字母和标点符号,切记,可避免日后编程输入的一些问题

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

//</editor-folder>

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

//简单演示class中的变量/常量声明定义
private var abc = "abc"
protected var bbc = "bbc"//这里会注意,在top level中 不能protected修饰变量,函数的定义,class中可以
// ,但是对于一个final的(也就是默认声明)类,这个权限也就相当于private了,只有对于open的class,protected的变量,才能被子类操作
internal var cbc = "cbc"
public var dbc = "dbc"
//4. 函数: 定义函数使用关键字fun 格式:fun 函数名(参数名:参数类型,等等):返回参数类型{ .... return xxx } ;
// 在函数定义处方法(或者叫做函数)入参的参数名称,成为形参,调用该函数的时候,传入的参数具体,叫做实参。
private fun sum(a: Int, b: Int): Int {
return a + b
}

var bNum = 0b001//二进制的表示数
var hNum = 0x0f00e//16进制数,kotlin中没有8进制的表示
var bigNum = 00_999_999_000.000//可以使用_下划线分割数据,便于读取,但是不会影响实际数值
val longStr = """long str \srng\t\'在这种string的方式,转义符也会失效"""
//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)}")
}

val name = "class name is a final value"//类中可以声明不可变量,也就是普通常量,但是不是static的静态的,如果声明静态需要在其伴生对象中
//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的,省略不写

/**
* 函数的定义,默认也是public final的,权限符号可以修改,如果想要被继承,就要用open修饰
* 只要class中有一个函数是open的,那么这个class就必须是open的。
*/
public final fun configData() {
println("普通默认的无参函数定义")
}
interface Shape

//7.1 相对完整的类定义的格式,实现接口
private class Rectangle(var height: Double, var length: Double) : Shape {
//类内部定义的属性,
var perimeter = (height + length) * 2
}
//更多的详见代码 ......
```
Expand All @@ -151,8 +154,8 @@ public final class KtClazz {
> 测试一下`Github`爱心💗**sponsor**功能,说不定您心血来潮了呢😂
![img](./docs/images/admireCode.png)![alipay](./docs/images/alipay2QR.png)
- **感谢以下捐助者**,您的鼓励更是我的动力;即使没有捐赠的各位好友,还请不要吝惜`star/follow`或者`issues`的建议

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

![01](./docs/images/admire/01.jpg)![02](./docs/images/admire/02.jpg)![03](./docs/images/admire/03.jpg)![04](./docs/images/admire/04.jpg)![05](./docs/images/admire/05.jpg)![06](./docs/images/admire/06.jpg)![07](./docs/images/admire/07.jpg)![anjing](./docs/images/admire/anjing.jpg )![beiying](./docs/images/admire/beiying.jpg)![chuifeng](./docs/images/admire/chuifeng.jpg)![feizhai](./docs/images/admire/feizhai.jpg)![haizei](./docs/images/admire/haizei.jpg)![panda](./docs/images/admire/panda.jpg)![pig](./docs/images/admire/pig.jpg)![yaya](./docs/images/admire/yaya.jpg)![yijia](./docs/images/admire/yijia.jpg)

Expand Down
Binary file removed docs/images/circle.png
Binary file not shown.
Binary file removed docs/images/databinding.png
Binary file not shown.
Binary file removed docs/images/jetpack-hero.png
Binary file not shown.
20 changes: 0 additions & 20 deletions docs/images/jetpack-hero.svg

This file was deleted.

Binary file removed docs/images/jetpack-icon.png
Binary file not shown.
Binary file removed docs/images/lifecycle.png
Binary file not shown.
Binary file removed docs/images/logcat.png
Binary file not shown.
Binary file removed docs/images/square.png
Binary file not shown.
56 changes: 51 additions & 5 deletions kotlin/src/main/res/layout/fragment_syntax.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="8dp">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/hongkong"
android:gravity="center"
android:text="语法品读" />
</androidx.constraintlayout.widget.ConstraintLayout>
android:text="語法品讀"
android:textSize="22sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/str_old_code_kotlin"
android:textColor="@color/md_theme_light_onSurfaceVariant"
android:textSize="14sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/str_concepts_kotlin"
android:textColor="@color/md_theme_light_inversePrimary"
android:textSize="14sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/str_collections_kotlin"
android:textColor="@color/md_theme_light_surfaceTint"
android:textSize="14sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/str_coroutines_kotlin"
android:textColor="@color/md_theme_light_secondary"
android:textSize="14sp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/str_flow_kotlin"
android:textColor="@color/md_theme_light_tertiary"
android:textSize="14sp" />


</LinearLayout>
13 changes: 9 additions & 4 deletions kotlin/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@
<resources>
<string name="title_kotlin">Kotlin Language</string>

<string name="str_entry_toplevel_kotlin">1、先看topLevel的代码文件,主要是kotlin的基础语法的第一部分 包括变量/常量,函数的定义,以及基础的数据类型</string>
<string name="str_kt_class_kotlin">2、看KtClazz,主要是讲class内的变量/常量、函数的定义,以及kotlin中类 、接口和object,构造函数等</string>
<string name="str_advanced_kotlin">3、advanced高级语法的代码演示,包括高阶函数、协程/纤程、常用Api的释义等</string>
<string name="str_unit_test_kotlin">Kotlin语法的使用演示,代码中有不少test函数, 想要看效果,最好就在`test`包下的UnitTest内, 自己写个单元测试更能看到效果</string>
<string name="str_old_code_kotlin">0、在kotlin的module下src有java和kotlin两个分包,java的是历史版本的代码,里面比较陈旧,可速览一遍即可。kotlin分包下,是最新根据语法特性分类分包写的。</string>
<string name="str_concepts_kotlin">1、在kotlin分包下有basic下快速学习kotlin语法的说明演示类;
concepts包下则是逐步细分学习的语法特性;
共10个kt文件,可依次按照SyntaxTypes、Properties、Control、ClassObject、Inheritance、Interface、Modifier、Function、Common、Generics来学习语法;
可在单元测试的test文件中,自己手动演示,更有利于学习掌握。
</string>
<string name="str_collections_kotlin">2、在kotlin的module下有collections分包,主要演示了集合相关的各类操作符,并有代码注释说明。</string>
<string name="str_coroutines_kotlin">3、在coroutines包下会详细演示协程相关的操作符,概念和使用</string>
<string name="str_flow_kotlin">4、flow和channel作为单独的一部分进行演示,介绍概念,操作符,使用逻辑等。</string>


</resources>

0 comments on commit da43646

Please sign in to comment.