Kotlin开源项目--Kotlin_try

一、项目展示

Kotlin开源项目--Kotlin_try_第1张图片 Kotlin开源项目--Kotlin_try_第2张图片 Kotlin开源项目--Kotlin_try_第3张图片
Kotlin开源项目--Kotlin_try_第4张图片 Kotlin开源项目--Kotlin_try_第5张图片 Kotlin开源项目--Kotlin_try_第6张图片
Kotlin开源项目--Kotlin_try_第7张图片 Kotlin开源项目--Kotlin_try_第8张图片 Kotlin开源项目--Kotlin_try_第9张图片
Kotlin开源项目--Kotlin_try_第10张图片 Kotlin开源项目--Kotlin_try_第11张图片 Kotlin开源项目--Kotlin_try_第12张图片

二、所用知识点:

1、开发语言为Kotlin,不过里面有少量的java代码,这是因为项目里面引入了greendao来管理数据库,
虽然kotlin被确定为官方开发语言已经有将近三个月的时间了,我也是第一次使用kotlin。当bean类用kotlin去实现的时候,
greendao会出现一些问题,所以项目里面部分的bean类我是用java来写的

2、MVP开发模式。项目使用的是mvp模式,这也是我第一次使用mvp。对于mvp的实现也是基于我个人的理解。mvp模式确实让类之间耦合性变低了,不过 类文件很多!!!

3、rxjava+retrofit+okhttp网络框架
对于网络请求这个搭配简直完美,我不去介绍它,网上关于这个的有很多很好的blog,如果你还没有使用过,It’s worth a shot!

  companion object {
        val BaseUrl = "https://api.douban.com/"
    }

    /**
     * 得到影院当前热映电影
     * https://api.douban.com/v2/movie/in_theaters
     * @start:相当于查询偏移量
     */
    @GET("v2/movie/in_theaters")
    @Headers("User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64; rv:54.0)")
    fun getTheaterMovie(@Query("start") start:Int ):Observable
    inner class MovieListObserver : Observer {
        private var disposable: Disposable? = null
        override fun onNext(t: MovieDoubanResponseBean?) {
            response = t
        }

        override fun onComplete() {
            onCompleted()
            disposable!!.dispose()
        }

        override fun onSubscribe(d: Disposable?) {
            disposable = d

        }

        override fun onError(e: Throwable?) {
            onFailed()
            Log.e("error","presenter"+e.toString())
            disposable!!.dispose()
        }

    }

代码有没有copy完整,虽然从截取的代码开看这个很麻烦,其实不然。逻辑优雅才是王道

4、glide加载图片,glide-transformations,实现对图片的变换
比如:唱片图片的网络加载以及圆形裁剪

    fun setAlbum(uri:String){
        Glide.with(context)
                .load(uri)
                .placeholder(R.drawable.album_default)
                .bitmapTransform(CropCircleTransformation(context))
                .crossFade(1000)
                .into(albumView)

    }

就是这方便。。。

5、eventbus实现跨组件间的通信

eventBus的引入可以大大减少对广播的使用,因为eventBus实现跨组件的通信只需要简单的几行代码

1:定义你需要传递的event
2:在onCreate()里面注册,在onDestroy()里面解除注册,
3:订阅 @Subscribe(threadMode = ThreadMode.MAIN)

6、jiecaovideoplayer播放本地和网络视频,这个播放器用起来很简单,如果只想实现普通的播放话,代码也许不会超过10行就可以实现了

7、SmartRefreshLayout下拉刷新

8、greendao对数据库的管理(备注:现在数据库存在很多问题)

9、BEGBanner轮播

三、项目简介
Kotlin_Try的主要功能是三个:听音乐,看新电影(只是影评和简介),阅读有质量的文章。
数据来源:
音乐部分来自百度音乐,电影资源来自豆瓣,文章来自One。
不过关于文章的部分目前还没有实现,而且在视频方面豆瓣api提供的内容有限,这个到后期可能会更改。

四、项目链接

https://github.com/KingLanding94/Kotlin_Try

后叙:目前项目还存在不少的bug,最近最近一周可能不会维护,之后会完善的。这个项目里面有很多知识点也都是我第一次学习并使用的。比如kotlin语言,mvp开发模式,rxjava等。项目里面的实现是我个人理解实现的,所以可能会有很多不足的地方。

这个项目的立意是从LRH1993的SmartRecom中来的,SmartRecom是一个很好的开源App,不过我就不在此夸它了。除了SmartRecom还有一个开源项目Eyepetizer-in-Kotlin也是LRH1993!

不得不说,这两个开源项目对于我的Android学习影响很大,在此感谢LRH1993大神

附录:
SmartRecom:https://github.com/LRH1993/SmartRecom
Eyepetizer-in-Kotlin:https://github.com/LRH1993/Eyepetizer-in-Kotlin

你可能感兴趣的:(android)