Kotlin项目实战之手机影音---项目介绍、项目启动
前言:
记得在2017年底就开始学习Kotlin这门现在已经几乎在Android上快普及的语言了,看一下目前在博客园https://www.cnblogs.com/webor2006/上记录专题的学习成果:
哇~~那不对于Kotlin这块已经妥妥的掌握了,然并卵,事实上在真实工作中我还并未做过用Kotlin开发的安卓项目。。基本还是停留在传统的Java语言上,那这不是自我感动么?所以接下来准备从0开始来打造一款属于自己纯Kotlin的安卓项目用来彻底巩固之前Kotlin的语言的学习,只有这样之前所学的Kotlin才不会是纸上谈兵。
那。。问题来了,啥项目呢?这里当然得借助网上的资源来进行学习了,在2017年下半年曾经在博学谷买了一套还比较全面的Kotlin课程:
实在是惭愧,居然买了这么多年了,一个综合项目都没有看。。所以呢,接下来第一个Kotlin实战操练项目就从上面取素材,不过当时Kotlin讲解是基于比较老的1.1.3进行的,而目前瞅一下官网Kotlin发展的版本:
相差还是很大的,所以不可能还是基于以前老的版本来进行学习了,这里我打算用1.3.61这个版本来进行开发,其实核心语法还是Koltin1.1.x,当然如果遇到跟教程上不匹配的到语法时再自己想办法来适配,这样才是学以致用的体现。而且这里做项目的目的是为了巩固之前花了大量时间来专研的Kotlin语法,所以说不是为了做而做,会尽量放慢节奏,对于实际开发中用到的语法都会用之前所学进行说明,只有将之前所学的这些零碎的Kotlin语法揉碎到项目中的点滴当中去才能真正的达到融会贯通,最终在简历上你才有资格增加一条“熟练使用kotlin进行Android的项目开发”技能,那下面就正式开启人生第一个Kotlin安卓项目的制作啦~~
项目介绍:
这里的项目类型如标题也能知道,是一款播放音乐和视频的软件,在正式撸码之前,先纵观一下最终我们要实现的一个效果,这样比较有学习动力:
整体效果:
列表上拉加载、下拉刷新:
本地音乐播放【含歌词】:
貌似选歌时的展开菜单有点BUG,这里先忽略,因为是基于官方给的项目源码来运行的,到时真正写的时再来解决它。
视频播放【横竖屏无缝切换】:
这里的mv视频是找了一个在线的链接,由于官方当时讲课时是音悦台mapi.yinyuetai.com官方提供的api,而可惜的是这家公司倒闭了。。
当然其域名也没法访问了,关于音乐这块的版权这块很严了,所以数据就弄一个固定的MP4来播了,对于技术的研究丝毫不受影响。
API说明:
从上面的效果图可以看到,尽量是以比较真实的需求来进行实现的,只有这样才能真正的磨练自己的Koltin的技能,整个APP涉及到在线音乐列表的播放,还有分页相关的功能,而由于官网讲课时的音悦台mapi.yinyuetai.com已经挂了,那只能另外寻找了,开始想着是自己搭一套,但是呢对于后端这块不熟【关于后端的技能未来还是得好好拓展一下】,所以放弃了,最终经过努力搜寻终于发现有个博主分享的链接可用【网上这块关于音乐开放api真的不是很多,可能是我找得有问题。。】,https://blog.csdn.net/alpgao/article/details/90079145,感谢博主的无私奉献,另外将官方的项目进行了API的改造,最终就看到上面的效果了,所以整个项目是以真实的API来进行操练,正好可以学习一下如何用Kolin来用Okhttp来进行网络的请求。
项目启动:
工程创建:
接下来则进式撸码环节,这次先做一些准备工作,之后再慢慢的往上磊代码:
这里以纯小白的方式,代码中看到需要解释的Kotlin的代码都会结合之前整理的笔记进行回顾巩固,图上标红是则是Kotlin的一个继承写法,关于继承可以参考https://www.cnblogs.com/webor2006/p/11203903.html进行全面了解,其中AppCompatActivity是一个Java类:
关于Kotlin继承这里要特别的注意一下:
接下来重写的Kotlin的语法也复习一下:
关于这块也有东东要回忆:
另外还有一个知识点需要看一下:
它代表啥意思来着?https://www.cnblogs.com/webor2006/p/7710446.html:
其中可以看到我们使用的Kotlin的版本为:
然后更新一下主题,默认主题包含ActionBar,对于咱们这个项目不需要:
引入anko库:
接下来引入一个常用的库:Anko,地址:https://github.com/Kotlin/anko,先看一下它是干嘛的?
先不管这么多,废弃肯定是可以继续用的,先往下读看一下它主要的作用:
其中简单看一下Commons库,其实就是对于我们平常要用的代码将其封装得更好了,如下:
具体用则在之后的项目中用到再来学习,这里有个疑问,为啥这么好的库要被废弃呢?官方稍加解读一下:
这里提到了JetPack,之前也对它进行了相应的学习,所以接下来则要找个时间好好的利用JetPack来做一个项目才行,彻底掌握这么好的库。
而替代方案官网也列了:
费话了这么多,接下来加入到工程中,反正目前还是有用武之地的:
创建常用的包名:
这边采用业界都非常流行的MVP框架来搭建,这里不考虑组件化的结构,这里的主要关注点是在使用Koltin上面而非架构上面,所以:
其中对于Kotlin通常会对类会定义扩展属性和扩展方法,所以这里再建一个包专门用来存放它们:
好,关于准备工作先到这,下次继续。