All Projects → madreain → Aachulk

madreain / Aachulk

Licence: apache-2.0
️🔥️🔥️🔥AACHulk是以Google的ViewModel+DataBinding+LiveData+Lifecycles框架为基础, 结合Okhttp+Retrofit+BaseRecyclerViewAdapterHelper+SmartRefreshLayout+ARouter打造的一款快速MVVM开发框架

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Aachulk

Jetpackmvvm
🐔🏀一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
Stars: ✭ 1,100 (+909.17%)
Mutual labels:  lifecycle, okhttp, mvvm, viewmodel, retrofit, livedata
WanAndroidJetpack
🔥 WanAndroid 客户端,Kotlin + MVVM + Jetpack + Retrofit + Glide。基于 MVVM 架构,用 Jetpack 实现,网络采用 Kotlin 的协程和 Retrofit 配合使用!精美的 UI,便捷突出的功能实现,欢迎下载体验!
Stars: ✭ 124 (+13.76%)
Mutual labels:  retrofit, okhttp, viewmodel, mvvm-architecture, livedata
Kriptofolio
Free open source minimalistic cryptocurrencies portfolio app for Android.
Stars: ✭ 79 (-27.52%)
Mutual labels:  retrofit, okhttp, viewmodel, mvvm-architecture, livedata
AndroidGo
Android、Flutter 开发者帮助 APP。包含事件分发、性能分析、Google Jetpack组件、OkHttp、RxJava、Retrofit、Volley、Canvas绘制以及优秀博文代码案例等内容,帮助开发者快速上手!
Stars: ✭ 30 (-72.48%)
Mutual labels:  retrofit, mvvm, okhttp, lifecycle, livedata
Mvvmframe
🏰 MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room } 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
Stars: ✭ 218 (+100%)
Mutual labels:  lifecycle, mvvm, mvvm-architecture, viewmodel, livedata
Tdcapp
Sample app which access the TDC (The Developer's Conference) REST API.
Stars: ✭ 55 (-49.54%)
Mutual labels:  lifecycle, mvvm, viewmodel, retrofit, livedata
Mvvmhabitcomponent
👕基于MVVMHabit框架,结合阿里ARouter打造的一套Android MVVM组件化开发方案
Stars: ✭ 857 (+686.24%)
Mutual labels:  lifecycle, aac, okhttp, mvvm, retrofit
Jetpack Mvvm Scaffold
人生苦短,让脚手架为你节省时间。(目前作为《最佳实践》项目的 Dev 版来优先更新)
Stars: ✭ 239 (+119.27%)
Mutual labels:  lifecycle, mvvm, mvvm-architecture, viewmodel, livedata
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+6128.44%)
Mutual labels:  lifecycle, aac, okhttp, mvvm, retrofit
RestaurantsExplorer
Android application build with MVVM Pattern, using Zomato API to enable search cities arround the world and display the city restaurants on a map.
Stars: ✭ 32 (-70.64%)
Mutual labels:  retrofit, okhttp, viewmodel, mvvm-architecture, livedata
Moviefinderusingmvvm Android
🔥 MVVM + Clean Architecture + Best Practices | 🍿Movie Finder is a sample Android application 📱to search movies using OMDb API which is built to demonstrate use of Modern Android development tools - (Kotlin, Coroutines, Kodein, Architecture Components, MVVM, Retrofit, Gson, Material Components) 😊😊😉
Stars: ✭ 66 (-39.45%)
Mutual labels:  mvvm, mvvm-architecture, viewmodel, livedata
Easychatandroidclient
EasyChat是一个开源的社交类的App。主要包含消息、好友、群组等相关的IM核心功能。部分界面参照了QQ、微信等相关社交APP。EasyChat APP整体采用MVVM模式,基于JetPack(Lifecycle,LiveData,ViewModel,Room)构建
Stars: ✭ 64 (-41.28%)
Mutual labels:  lifecycle, mvvm, viewmodel, livedata
MockAppMVVM
A sample app structure using the MVVM architecture using Retrofit, Dagger2, LiveData, RxJava, ViewModel and Room.
Stars: ✭ 14 (-87.16%)
Mutual labels:  viewmodel, lifecycle, mvvm-architecture, livedata
PlayAndroid
✌️✊👋玩安卓Mvvm组件化客户端,整合Jetpack组件DataBinding、ViewModel以及LiveData;屏幕适配✔️状态栏沉浸式✔️黑夜模式✔️,无数据、加载失败状态页;骨架屏、Koin依赖注入等
Stars: ✭ 193 (+77.06%)
Mutual labels:  retrofit, mvvm, viewmodel, livedata
CoMvvmHelper
android mvvm 基础框架,适合日常快速开发。有需要添加的内容或者发现问题可以提 issue。
Stars: ✭ 26 (-76.15%)
Mutual labels:  mvvm, viewmodel, lifecycle, livedata
Relax
☘☘Relax 基于Kotlin语言编写的一套组件化框架,不紧整体组件化、内部也高度组件化🎋你可配置MVP、MVVM的开发模式、也可以配置所需要的业务组件🍁🍁
Stars: ✭ 253 (+132.11%)
Mutual labels:  lifecycle, mvvm, retrofit, livedata
Android Jetpack Demo
🔥 快速入门Android Jetpack以及相关Kotlin、RxJava、MVVM等主流技术,独立构架App的基础技能
Stars: ✭ 335 (+207.34%)
Mutual labels:  lifecycle, mvvm, viewmodel, livedata
Androidroom
Android example to show how to use Room to access SQLite database on device for reading and writing data. This example also shows how to use LiveData and ViewModel with Room to build reactive, well performing and easy to maintain applications.
Stars: ✭ 36 (-66.97%)
Mutual labels:  mvvm, mvvm-architecture, viewmodel, livedata
Mvvmarms
Android MVVM Architecture Components based on MVPArms and Android Architecture Components.
Stars: ✭ 425 (+289.91%)
Mutual labels:  lifecycle, mvvm, viewmodel, livedata
Sample Code Movies
This repository contains sample code. Its purpose being, to quickly demonstrate Android and software development in general, clean code, best practices, testing and all those other must know goodies.
Stars: ✭ 81 (-25.69%)
Mutual labels:  mvvm, viewmodel, retrofit, livedata

AACHulk


AACHulk是以Google的ViewModel+LiveData框架为基础, 结合Okhttp+Retrofit+BaseRecyclerViewAdapterHelper+SmartRefreshLayout+ARouter打造的一款快速开发框架, 开发语言是Kotlin,再结合AACHulkTemplate模版开发进行开发, 避免一些繁琐的操作,提供开发效率

Hex.pm

功能介绍

1.支持服务器地址、MOCK服务器地址、成功码、各种超时时间、各种拦截器等的配置

2.支持自定义各种非正常态View替换

3.支持接口调用出错时重试

4.支持Activity、Fragment展示,满足业务需求

5.支持多布局适配器

6.支持ViewModel的多业务下的复用

7.支持通用代码生成AACHulkTemplate模版

第三方库

  1. Okhttp 一个用于Android、Kotlin和Java的HTTP客户端
  2. Retrofit 为Android和Java提供安全的HTTP客户端
  3. BaseRecyclerViewAdapterHelper 功能强大、灵活的万能适配器
  4. SmartRefreshLayout Android智能下拉刷新框架
  5. ARouter 帮助 Android App 进行组件化改造的路由框架

基础功能

1.添加依赖

在project的build.grade加入

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
        google()
        jcenter()
    }
}

在主项目app的build.grade加入

api 'com.madreain:libhulk:1.0.4'

2.继承HulkApplication,配置相关配置项

    LibConfig.builder()
                .setBaseUrl(BuildConfig.BASE_URL)//baseurl
                .setMockUrl(BuildConfig.MOCK_URL)//mockurl
                .setRetSuccess(1)//成功状态码
                .addOkHttpInterceptor(RequestHeaderInterceptor())//统一请求头处理
                .addOkHttpInterceptor(MockInterceptor())//mockurl的地址配置
                .addRetCodeInterceptors(SessionInterceptor())//互踢操作、封号等需设置固定code码的统一处理
                .init(this)

上面这些配置项的配置可参考demo进行自身项目的配置

这里还可根据SmartRefreshLayout相关文档配置统一样式,也可单独设置,也可自定义,根据自身项目选择

3.继承BaseResponseBean,根据自身项目封装统一的数据接受

5.编写ApiService,放接口

6.编写通用的Toolbar(自行选择) 因受kotlin-android-extensions这个插件可能只管自己module的资源文件的影响,没法将通用的toolbar.xml写在libhulk中供app使用,因此只能在app项目中写通用的toolbar.xml

⚠️ 如果大佬们有好的实现方法欢迎指教

️🔥️🔥️🔥 AACHulkTemplate模版,此模版使用得保证ApiService、toolbar.xml已创建,使用者也可根据自身项目进行修改

快速开发

AACHulkTemplate模版用起来是相当香的,接下来讲一下自已手动的步骤,以SingleActivity举例

1.新建SingleActivity继承BaseActivity


class SingleActivity : BaseActivity(R.layout.activity_single) {

    private val singleViewModel by viewModels<SingleViewModel>()

    override fun init(savedInstanceState: Bundle?) {
        //ActionBar相关设置
        ActionBarUtils.setSupportActionBarWithBack(toolbar, null, View.OnClickListener {
            onBackPressed()
        })
        ActionBarUtils.setToolBarTitleText(toolbar, "单数据展示界面")

    }

}

2.ARoute的配置

根据自身项目需求来决定是否配置ARoute来进行路由控制

@Route(path = RouteUrls.Single)

3.创建对应的对象

@Keep
data class SingleData(
    var code: String,
    var name: String
)

4.新建SingleViewModel继承ViewModel

class SingleViewModel : ViewModel() {


    fun cityList(page: IPage, onSuccess: (data: List<SingleData>?) -> Unit) {
        NetHelper.request(page, block = {
            NetHelper.getService(ApiService::class.java).getCityList().asResult()
        }, onSuccess = {
            onSuccess(it)
        }, onError = {
            ToastUtils.showLong(it.message)
        })
    }

}

5.调用接口,数据的处理

        //请求接口
        singleViewModel.cityList(this, onSuccess = {
            it?.let {
                tv.text = it[0].name
            }
        })

到此为止,简单的一个接口调用到数据展示就完成了

⚠️⚠️⚠️ 带适配器的demo参考ListActivity

用法进阶

1.自定义各种非正常态View替换

重写buildPageInit方法,创建IPageInit,可以通过重写实现IPageInit方法,去创建适合自己app的默认界面、异常错误界面

封装好的带下拉刷新和加载更多的ListView支持setEmpty设置不同的空界面展示

2.拦截器

2.1 请求头拦截器

class RequestHeaderInterceptor : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response {
        return chain.proceed(processRequest(chain.request()))
    }

    private fun processRequest(request: Request): Request {
        if (request == null) return request
        val newBuilder = request.newBuilder()
        //设置传递过来的相关的headers
        return newBuilder.headers(addHeaders()).build()
    }

    fun addHeaders(): Headers {
        return Headers.Builder()
            .add("app_id", "wpkxpsejggapivjf")
            .add("app_secret", "R3FzaHhSSXh4L2tqRzcxWFBmKzBvZz09")
            .build()
    }


}

2.2 MOCK拦截器

实际应用:可应用于App中接口前期的MOCK

@EverythingIsNonNull
class MockInterceptor : Interceptor {
    @Throws(IOException::class)
    override fun intercept(chain: Interceptor.Chain): Response {
        var request = chain.request()
        val originalUrl = request.url.toString()
        val path =
            originalUrl.substring(LibConfig.getBaseUrl().length)
        return if (sMockUrls.contains(path)) {
            request =
                request.newBuilder().url("${LibConfig.getMockUrl()}$path")
                    .build()
            chain.proceed(request)
        } else {
            chain.proceed(request)
        }
    }

    companion object {
        //todo 这里写待调试的时候的需用用mock的url地址
        private val sMockUrls =
            listOf(
                ""
            )
    }
}

2.3 非正常态响应码拦截器

实际应用:可应用于App中互踢操作、封号等需设置固定code码的统一处理

class SessionInterceptor : ErrorInterceptor(-100) {
    override fun interceptor(throwable: Throwable): Boolean {
        // TODO: 2021/3/9 互踢的操作
        return true
    }


}

3.消息总线

针对大家提出的问题,这里采用了LiveEventBus(缺点:不支持线程分发)去替换原先的EventBus,去掉了在HulkConfig设置setEventBusOpen的开关设置,大家可根据自身项目去选择适合自己的消息总线

LiveEventBus 消息总线,基于LiveData,具有生命周期感知能力,支持Sticky,支持AndroidX,支持跨进程,支持跨APP

具体实现方法参考官方文档

4.Lottie的使用

刷新头、loading的样式都使用了强大的动画库Lottie,这样可根据app让ui设计出酷炫且适合的动画

相关资料

🌟🌟🌟 推荐Carson_Ho大佬的Kotlin:这是一份全面 & 详细的 类使用 的语法学习指南

感谢

感谢本框架所使用到的所有三方库的作者,以及所有为开源做无私贡献的开发者和组织,使我们能更好的工作和学习,本人也会将业余时间回报给开源社区

关于我

License

   Copyright [2020] [madreain]

   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.
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].