一、项目展示
二、所用知识点:
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