All Projects → zhiwei1990 → Android Jetpack Demo

zhiwei1990 / Android Jetpack Demo

Licence: apache-2.0
🔥 快速入门Android Jetpack以及相关Kotlin、RxJava、MVVM等主流技术,独立构架App的基础技能

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Android Jetpack Demo

MockAppMVVM
A sample app structure using the MVVM architecture using Retrofit, Dagger2, LiveData, RxJava, ViewModel and Room.
Stars: ✭ 14 (-95.82%)
Mutual labels:  room, navigation, dagger, viewmodel, lifecycle, paging, livedata
Easychatandroidclient
EasyChat是一个开源的社交类的App。主要包含消息、好友、群组等相关的IM核心功能。部分界面参照了QQ、微信等相关社交APP。EasyChat APP整体采用MVVM模式,基于JetPack(Lifecycle,LiveData,ViewModel,Room)构建
Stars: ✭ 64 (-80.9%)
Mutual labels:  lifecycle, mvvm, viewmodel, room, dagger, livedata
Jetpackmvvm
🐔🏀一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
Stars: ✭ 1,100 (+228.36%)
Mutual labels:  lifecycle, mvvm, viewmodel, navigation, livedata, databinding
Mvvmsmart
基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合ViewModel+Lifecycles+Navigation+DataBinding+LiveData+Okhttp+Retrofit+RxJava+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发高质量、易维护的Android应用。 项目组会持续维护,请放心使用.欢迎Start并Fork交流.
Stars: ✭ 382 (+14.03%)
Mutual labels:  mvvm, viewmodel, room, navigation, livedata, databinding
Mvvmframe
🏰 MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room } 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
Stars: ✭ 218 (-34.93%)
Mutual labels:  lifecycle, mvvm, viewmodel, room, livedata, databinding
Mvvmarms
Android MVVM Architecture Components based on MVPArms and Android Architecture Components.
Stars: ✭ 425 (+26.87%)
Mutual labels:  lifecycle, mvvm, viewmodel, room, livedata, databinding
Mentorship Android
Mentorship System is an application that matches women in tech to mentor each other, on career development, through 1:1 relations during a certain period of time. This is the Android application of this project.
Stars: ✭ 117 (-65.07%)
Mutual labels:  rxjava, mvvm, viewmodel, livedata, databinding
Wanandroid
🏄 基于Architecture Components dependencies (Lifecycles,LiveData,ViewModel,Room)构建的WanAndroid开源项目。 你值得拥有的MVVM快速开发框架:https://github.com/jenly1314/MVVMFrame
Stars: ✭ 410 (+22.39%)
Mutual labels:  mvvm, viewmodel, room, livedata, databinding
catchflicks
🎬 Kitchen sink project for learning android concepts 🎬
Stars: ✭ 12 (-96.42%)
Mutual labels:  room, rxjava, viewmodel, lifecycle, databinding
DeezerClone
This Application using Dagger Hilt, Coroutines, Flow, Jetpack (Room, ViewModel, LiveData),Navigation based on MVVM architecture.
Stars: ✭ 81 (-75.82%)
Mutual labels:  room, navigation, mvvm, viewmodel, livedata
Gallerit
A sample Android gallery to search images posted on Reddit built using modern Android development tools (Architecture Components, MVVM, Coroutines, Flow, Navigation, Retrofit, Room, Koin)
Stars: ✭ 153 (-54.33%)
Mutual labels:  mvvm, viewmodel, room, navigation, livedata
Wanandroid
Jetpack MVVM For Wanandroid 最佳实践 !
Stars: ✭ 1,004 (+199.7%)
Mutual labels:  lifecycle, mvvm, viewmodel, livedata, databinding
Tdcapp
Sample app which access the TDC (The Developer's Conference) REST API.
Stars: ✭ 55 (-83.58%)
Mutual labels:  lifecycle, mvvm, viewmodel, room, livedata
Jetpack Mvvm Scaffold
人生苦短,让脚手架为你节省时间。(目前作为《最佳实践》项目的 Dev 版来优先更新)
Stars: ✭ 239 (-28.66%)
Mutual labels:  lifecycle, mvvm, viewmodel, navigation, livedata
modern-android
Modern Android Project Skeleton
Stars: ✭ 17 (-94.93%)
Mutual labels:  room, rxjava, mvvm, viewmodel, databinding
CoMvvmHelper
android mvvm 基础框架,适合日常快速开发。有需要添加的内容或者发现问题可以提 issue。
Stars: ✭ 26 (-92.24%)
Mutual labels:  mvvm, viewmodel, lifecycle, livedata
Kotlinjetpackinaction
🔥🔥 Kotlin Jetpack zero to hero. 新手到高手
Stars: ✭ 264 (-21.19%)
Mutual labels:  mvvm, viewmodel, livedata, databinding
Mvvm Architecture
The practice of MVVM + Jetpack architecture in Android.
Stars: ✭ 1,634 (+387.76%)
Mutual labels:  rxjava, lifecycle, mvvm, navigation
Android Clean Architecture Mvvm Dagger Rx
Implemented by Clean Architecture, Dagger2, MVVM, LiveData, RX, Retrofit2, Room, Anko
Stars: ✭ 138 (-58.81%)
Mutual labels:  rxjava, mvvm, room, livedata
AndroidGo
Android、Flutter 开发者帮助 APP。包含事件分发、性能分析、Google Jetpack组件、OkHttp、RxJava、Retrofit、Volley、Canvas绘制以及优秀博文代码案例等内容,帮助开发者快速上手!
Stars: ✭ 30 (-91.04%)
Mutual labels:  rxjava, mvvm, lifecycle, livedata

android-jetpack-demo

🔥Android-Jetpack-Demo

jetpack apache2.0 API Build Status SonarCloud codebeat badge GitHub repo size GitHub Release Date version GitHub last commit GitHub commit activity HitCount

目录

一、项目简介

写在前面,首先感谢各位童鞋对本项目的关注和支持,项目诞生之时,也是自己学习jetpack初期,随着这两年的企业项目实践,对于jetpack的认识也有较为深入的了解,后续将逐步重构掉该项目,使用最新的kotlin+jetpack+coroutines体系,配合详细博文,期待同学们的支持和鼓励!

Android-Jetpack-Demo 是一个简单的、集成当前Google主流Android技术的示例Demo,旨在帮助有需要的初级开发者,快速上手Android新技术、新架构。主要使用livedatalifecyclepagingroomnavigationworkmanagerrxjavakotlindagger2以及viewmodelMVVM简单架构。

代码中都有详细的注释,主要操作演示关注logcat的日志输出

二、更新日志

  • 2.0.0-alpha01(2019年11月28日)

    • 更新jetpack组件版本
    • kotlin进阶语法的基本学习
    • 简单的初步分模块
  • v1.1.0(2019年6月27日)

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

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

三、Sample示例

下载体验apk或者手机扫描二维码下载Demoapk

扫描下载

四、项目组成[^1]

项目主要简单的演示一些android技术与框架库的入门使用,RxJava操作符、Kotlin基本语法,以及JetPack的组件的简单使用。

  • Android Architecture Components
  • RxJava
  • Kotlin
  • Dagger2
  • Jetpack
    • lifecycle
    • livedata
    • databinding
    • navigation
    • paging
    • room
    • workmanager

五、规划

  • [x] 基础使用入门的代码演示
  • [x] DataBinding代码详解
  • [x] Kotlin代码详解
  • [ ] jetpack组件的使用详解
  • [ ] rxJava的使用详解
  • [ ] dagger/koin注入框架的演示详解
  • [ ] App架构相关的详解
  • [ ] 进阶技术&架构的演示

六、示例内容(部分)

databindinglifecyclelogcat

  • Kotlin语法及部分博文Kotlin
package org.zhiwei.jetpack.kt.base

/**
 * 作者: 志威  zhiwei.org
 * 主页: Github: https://github.com/zhiwei1990
 * 日期: 2019年09月19日 11:13
 * 签名: 天行健,君子以自强不息;地势坤,君子以厚德载物。
 *      _              _           _     _   ____  _             _ _
 *     / \   _ __   __| |_ __ ___ (_) __| | / ___|| |_ _   _  __| (_) ___
 *    / _ \ | '_ \ / _` | '__/ _ \| |/ _` | \___ \| __| | | |/ _` | |/ _ \
 *   / ___ \| | | | (_| | | | (_) | | (_| |  ___) | |_| |_| | (_| | | (_) |
 *  /_/   \_\_| |_|\__,_|_|  \___/|_|\__,_| |____/ \__|\__,_|\__,_|_|\___/  -- 志威 zhiwei.org
 *
 * 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的。
 * 8、如果class是final的,函数open修饰,是无效的。而且,open的函数或者变量不能private修饰,且与final修饰符是互斥的。
 * 9、构造函数分为主构造函数,次构造函数,而且kotlin中,如果主构造函数显式的写在class的名后,则所有次级构造函数必须调用主构造函数
 * 10、class类都有一个自身的init函数,在class加载时候就运行,早于构造函数的调用!!!
 * 11、接口实现,或者类的继承,需要用:,类似于java中的extends,implementation,可多个接口,但只有一个父类
 * 12、抽象类abstract,其抽象函数 不同于接口的函数,它是不能有默认方法体的。
 * 13、如果子类实现多个接口,且接口中拥有共同的函数命,就会冲突,在子类中就需要显式指明调用哪个
 * 14、单例类object,也就是静态的单例模式,
 * 15、数据类,一个数据bean对象的类,特殊的class 使用data class 声明
 */
public final class KtClazz {

    //<editor-folder desc="类的构造函数的讲解模块">

    constructor()//默认class类都有一个的无参构造函数

    constructor(name: String)//这样写三个构造函数,属于平级,所以不需要依次调用。倘若在上面class KtClazz后添加了构造函数

    constructor(name: String, age: Int)

    //</editor-folder>

    //<editor-folder desc="类函数的定义模块">

    //简单演示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"

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

    val name = "class name is a final value"//类中可以声明不可变量,也就是普通常量,但是不是static的静态的,如果声明静态需要在其伴生对象中


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

    /**
     * 有参数的函数定义
     */
    private fun paramConfig(name: String, age: Int) {
        println("name: " + name + "age: " + age)
    }

    /**
     * 可变参数的函数定义,这里用到了vararg的关键词,如此调用方就可以传递一个或者多个参数进来。类似于java中的 (String... apple)的写法
     */
    internal fun varargConfig(vararg apple: String) {
        println("该函数,是可以接收可变个数的参数")
    }

    //</editor-folder>

    /**
     * 伴生的object类,静态类,可以写这个KtClassObj的名字,也可以省略不写。
     */
    /*private*/ companion object /*KtClazzObj*/ {
        private const val constName = "静态常量名"//静态常量,声明定义在class的伴生对象类中

    }

}
//更多的详见代码 ......

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

七、关于作者 jianshugithubcsdn

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

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

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

  • Donationsdonation

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

    imgalipay

Github starsGithub followersGithub issues

  • License
Copyright 2020 zhiwei1990

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]: 项目当前(2020/05/07)开发环境为AndroidStudio 3.6.3gradle 6.3Jdk8Kotlin 1.3.72

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].