基于kotlin+RxJava2+Retrofit2的练手项目

基于kotlin+RxJava2+Retrofit2的练手项目

Android小彩虹2021-07-24 23:07:02430A+A-

项目介绍

前言

此项目是基于Kotlin,RxJava2和Retrofit2开发的一个完全模仿于知乎日报的app,鉴于最近刚好学了kotlin语言,此项目用于练手。其中api的地址来源于https://github.com/izzyleung/ZhihuDailyPurify/wiki/%E7%9F%A5%E4%B9%8E%E6%97%A5%E6%8A%A5-API-%E5%88%86%E6%9E%90 。对于刚好学了kotin,在使用rxjava和retrofit相结合的情况下,代码确实很多坑,好在在自己的不懈努力下基本上完成了该项目,该项目的用时也不是很长,只用了三天多的时间。在项目期间还是了解了很多的知识。

项目整体搭建

项目添加的部分依赖如下:

    //Design    implementation 'com.android.support:design:26.1.0'    //CardView    implementation 'com.android.support:cardview-v7:26.1.0'    //RxJava    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'    //RxBinding    implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'    //rxrelay    implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'    //circleimageview    implementation 'de.hdodenhof:circleimageview:2.1.0'    //retrofit and okhttp    implementation 'com.squareup.retrofit2:retrofit:2.3.0'    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'    implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.8.0'    implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'    implementation 'com.squareup.okhttp3:okhttp:3.9.0'    //rxlifecycle    implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.1'    implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.1'

其中retrofit网络封装如下:

    private constructor() {        var logging = HttpLoggingInterceptor(object : Logger{            override fun log(message: String?) {            }        })        logging.setLevel(HttpLoggingInterceptor.Level.BODY)        mCookieManager = CookieManager()        mCookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL)        mOkHttpClient = OkHttpClient.Builder()                .addInterceptor(logging)                .connectTimeout(20, SECONDS)                .cookieJar(JavaNetCookieJar(mCookieManager))                .build()        var url = "http://news-at.zhihu.com/api/4/"        mRetrofit = Retrofit.Builder()                .baseUrl(url)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())                .client(mOkHttpClient)                .build()        api = mRetrofit.create(Api::class.java)    }

部分API如下:

    @GET("news/latest")    fun latestNews(): Observable<Response<LatestNews>>    @GET("news/before/{time}")    fun beforeNews(@Path("time") time : String): Observable<Response<LatestNews>>    @GET("theme/{item}")    fun otherNews(@Path("item") item : String): Observable<Response<InternetNews>>

因为接口比较少,功能比较少。只是简洁的封装了一次,没有对response的结果进行处理,如果在自己的项目里面一定要对其response进行处理。便于修改和处理问题。

其中在activity中调用入如下:

   HttpClient.getInstance()            .service()            .getSection(String.format("%d", section!!.id), time)            .compose(SchedulerTransformer<Response<LisSections>>())            .compose(DataTransformer<LisSections>())            .observeOn(AndroidSchedulers.mainThread())

部分界面效果如下:

总结

首先做这个项目是受于我朋友的启发。早在之前就学习了kotlin,但是都仅限于学习学习语法,写写小demo等,并没有实际运用于项目之中,开始想着公司如果有机会的话自己就大展身手,毕竟是google官方支持的语言。然而苦于公司并没有如此的机会,自己也就这样抛在一边并没有管,就在前几天和朋友聊天谈论到kotlin,朋友就建议我写个小的项目试试,我就在网上找了部分的关于知乎日报的API接口。鉴于此就完全按照知乎日报的界面进行绘制,功能的添加。历时三天的时间终于完成了(此处只针对部分GET请求,POST请求在该项目没有添加,因为涉及到数据侵权问题,此处没有添加。但是基本的功能都是有)。完成时间比较短暂,因为时间有限,后期还会转到MVP模式。所以我打算也把源码公开,如果有网友感兴趣的话也可以提提意见,后期会在项目里面完善。

APK下载地址:http://fir.im/yn4r

源码存放于百度云上面的。此处为百度云下载地址:链接:https://pan.baidu.com/s/1gfbAHgf 密码:nqgw。

欢迎大家关注我的公众号:Android总结

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们