All Projects → LRH1993 → Eyepetizer In Kotlin

LRH1993 / Eyepetizer In Kotlin

使用Kotlin撸一款Eyepetizer,学习Kotlin语言

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Eyepetizer In Kotlin

Eyepetizer
An unofficial Eyepetizer(开眼视频) App built using Ijkplayer, RxJava2, Retrofit2, Dagger2, Room , DataBinding and Clean-MVVM Architecture.
Stars: ✭ 22 (-98.63%)
Mutual labels:  ijkplayer, eyepetizer
Tucao
http://www.tucao.tv/ 吐槽第三方Android客户端
Stars: ✭ 976 (-39.11%)
Mutual labels:  ijkplayer
Gsyvideoplayer
视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS,支持弹幕,外挂字幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,列表切换详情页面无缝播放,rtsp、concat、mpeg。
Stars: ✭ 16,948 (+957.27%)
Mutual labels:  ijkplayer
Bzijkplayer
基于cmake构建的ijkPlayer
Stars: ✭ 23 (-98.57%)
Mutual labels:  ijkplayer
Dkvideoplayer
Android Video Player. 安卓视频播放器,封装MediaPlayer、ExoPlayer、IjkPlayer。模仿抖音并实现预加载,列表播放,悬浮播放,广告播放,弹幕
Stars: ✭ 3,796 (+136.81%)
Mutual labels:  ijkplayer
Ijkplayer
Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
Stars: ✭ 29,752 (+1756.02%)
Mutual labels:  ijkplayer
Ijkplayer
基于bilibili视频直播的demo
Stars: ✭ 270 (-83.16%)
Mutual labels:  ijkplayer
Youqu master
友趣app,一款可以交朋友并且十分有趣的应用。Rxjava+Retrofit+Glide+ijkplayer结合的MVP框架(精选图书,妹纸福利图片,火爆视频,各种炫酷特效)
Stars: ✭ 107 (-93.33%)
Mutual labels:  ijkplayer
Mcplayerkit
MCPlayerKit is iOS Player, PlayerCoreType: AVPlayer can use play some video, IJKPlayer type can play video, Live ...
Stars: ✭ 34 (-97.88%)
Mutual labels:  ijkplayer
Flutter ijkplayer
ijkplayer for flutter
Stars: ✭ 703 (-56.14%)
Mutual labels:  ijkplayer
Bilibili Android Client
An unofficial bilibili client for android http://www.jianshu.com/p/f69a55b94c05 -- 该项目已停止维护!
Stars: ✭ 4,430 (+176.36%)
Mutual labels:  ijkplayer
Kotlinmvp
🔥 基于Kotlin+MVP+Retrofit+RxJava+Glide 等架构实现短视频类小项目,简约风格及详细注释,欢迎 star or fork!
Stars: ✭ 3,488 (+117.59%)
Mutual labels:  eyepetizer
Fijkplayer
ijkplayer for flutter. ijkplayer 的 flutter 封装。 Flutter video/audio player. Flutter media player plugin for android/iOS based on ijkplayer. fijkplayer 是基于 ijkplayer 封装的 flutter 媒体播放器,开箱即用,无需编译 ijkplayer
Stars: ✭ 943 (-41.17%)
Mutual labels:  ijkplayer
Livestream
一个实现直播的解决方案,视频采用H264编码、音频采用ACC编码、传输采用Rtmp协议
Stars: ✭ 318 (-80.16%)
Mutual labels:  ijkplayer
Android P2p Engine
Let your viewers become your unlimitedly scalable CDN.
Stars: ✭ 70 (-95.63%)
Mutual labels:  ijkplayer
Zftplayer
iOS平台下基于IJKplayer封装的视频播放器,主要适用于视频点播。针对视频格式,前后台切换,内存管理控件的层级分离做了相应优化
Stars: ✭ 273 (-82.97%)
Mutual labels:  ijkplayer
Bilisoleil
An unofficial bilibili client for android --rxjava2+mvp+okhttp3+retrofit2+dagger2
Stars: ✭ 430 (-73.18%)
Mutual labels:  ijkplayer
Kotlin Life
App界的一股清流 音视频vr应有尽有 完全按照Material design规范设计的App (written with java and Kotlin)
Stars: ✭ 864 (-46.1%)
Mutual labels:  ijkplayer
Flutter ijk
flutter封装的ijkplayer,支持rtsp播放
Stars: ✭ 118 (-92.64%)
Mutual labels:  ijkplayer
Basemvp Master
一个基本的MVP应用框架(RxJava+Retrofit+Glide+IjkPlayer),封装比较完善,易于使用,帮助日常快速开发一个项目。
Stars: ✭ 101 (-93.7%)
Mutual labels:  ijkplayer

Eyepetizer-in-Kotlin

Google在今年的IO大会上宣布,将Kotlin作为Android开发的一级语言。作为紧跟潮流的弄潮儿,对kotlin稍做了解后,发现其有优秀的特性,所以就开始了学习,而Eyepetizer-in-Kotlin便是对kotlin进行学习后的阶段性成果。

一、screenshot

1.启动界面

2.主界面

3.视频界面

4.搜索界面

5.缓存界面

二、app介绍

1.数据来源

Eyepetizer-in-Kotlin的所有数据来源自开眼视频,不涉及任何商业用途,有如侵权,立即删除。

具体api接口可以参考项目中的Api类。

2.功能

● 含有开眼视频每日推荐、热门及分类小视频
● 支持视频播放,包含全屏播放等特性
● 支持关键词搜索,想看什么看什么
● 记录历史观看,以及缓存视频,本地播放等功能

3.特点

作为学习kotlin的一款app,在撸代码的过程中学习kotlin的语法及特性。

Eyepetizer-in-Kotlin适合初学者作为学习kotlin语言的一个项目,可以在做项目的同时体验到kotlin语言的优点。

三、kotlin特性

在做Eyepetizer-in-Kotlin的过程中,了解到了许多kotlin的特性,用在日常开发中,大大提高了开发效率,下面就简单介绍下在项目中用到的几个重要的kotlin特性。

(1) 和findViewById说再见

我们可以直接使用xml中对应的id,并且import对应的文件,不在需要findViewById

import kotlinx.android.synthetic.main.activity_watch.*
.........
tv_hint.visibility = View.VISIBLE
tv_hint.text = "告别findViewById"
(2) 延迟加载

延迟加载有几个好处。首先由于加载时机推迟到了变量被访问时,因此它可以提高应用的启动速度。其次,这样的延迟加载也有更高的内存效率。

val mModel: FindDetailModel by lazy {
        FindDetailModel()
    }

当第一次使用mModle的时候进行初始化

lateinit var mAdapter: DownloadAdapter

在任何想进行初始化的位置进行初始化

(3) Lambdas 表达式

Lambdas 表达式在减少源文件中代码的总行数的同时,也支持函数式编程。

使用 lambdas 表示式时,onClickListener 的用法如下:

holder?.itemView?.setOnClickListener {
            var keyWord = list?.get(position)
            var intent : Intent = Intent(context,ResultActivity::class.java)
            intent.putExtra("keyWord",keyWord)
            context?.startActivity(intent)
            mDialogListener?.onDismiss()
        }
(4) 数据类

数据类简化了类的定义,自动为类添加equals(),hashCode(),copy() 和toString() 方法。它明确定义了 model 类的意图,以及应该包含什么内容,同时将纯数据与业务逻辑分离开来。

data class VideoBean(var feed:String?,var title:String?,var description:String?,
                     var duration: Long?,var playUrl: String?,var category: String?,
                     var blurred : String?,var collect:Int?,var share:Int?,var reply:Int?,var time:Long) : Parcelable,Serializable {}

就是如此简单,对比以前动辄几百行的数据类,简洁了太多。如果想实现序列化Parcelable,可以下载支持kotlin序列化的插件,一键实现,非常方便。

(5) 集合过滤

通过使用 Kotlin 的集合过滤功能,我们可以使代码变得更清晰简洁。

bean.issueList!!
                .flatMap { it.itemList!! }
                .filter { it.type.equals("video") }
                .forEach { mList.add(it) }

通过以上过滤,便可以得到我们想要的内容。

(6) 扩展

扩展的好处在于它允许我们为一个类添加功能同时无需继承它。例如,你是否曾经希望 Context 有某些方法,比如 showToast()?使用扩展,你可以很容易实现这个功能:

fun Context.showToast(message: String) : Toast {
    var toast : Toast = Toast.makeText(this,message,Toast.LENGTH_SHORT)
    toast.setGravity(Gravity.CENTER,0,0)
    toast.show()
    return toast
}
(7) 其他特性

字符串

Kotlin在字符串之中可以使用变量,相对与在Java中的字符串拼接,更让人感觉到舒服。

holder?.tv_detail?.text = "发布于 $category / $realMinute:$realSecond"

when

Kotlin中when的出现替代了switch,但其功能更加强大。

 override fun onClick(v: View?) {
        when(v?.id){
            R.id.tv_watch ->{
                var intent = Intent(activity,WatchActivity::class.java)
                startActivity(intent)
            }
            R.id.tv_advise ->{
                var intent = Intent(activity,AdviseActivity::class.java)
                startActivity(intent)
            }
            R.id.tv_save ->{
                var intent = Intent(activity,CacheActivity::class.java)
                startActivity(intent)
            }
        }
    }

当然Kotlin的特性不止如此,还有更多高阶的特性如:高阶函数, Anko等,这些特性还需进一步学习应用

四、为什么要学Kotlin?

关于为什么要学Kotlin,在Google IO大会帮把kotlin作为一级开发语言后就已经有了很多的讨论。 当时学习的必要性还不明确,过了几个月之后,我们再来看一下学习的必要性。

1.语言层面

通过以上分析,我们可以知道kotlin对于android开发的优势,同时kotlin也是基于JVM的一门静态语言,与Java完美兼容,不存在项目迁移等问题。除此之外,学习成本也比较低,很好入门。当然如果想要达到熟练程度,还需继续练习。

2.形势层面

国外:Pinterest、Evernote、Uber等企业已经开始应用,Google也在一些小项目中应用kotlin,Google一些专家非常看好Kotlin。

国内:据我所知,美团已经开始使用kotlin。一些大型互联网公司由于业务导向,开发压力重,不敢轻易使用kotlin,不过它们已经开始跃跃欲试,着手在新的项目中使用kotlin。

讲了这么多,学习kotlin虽然不是必须的,但是应对趋势发展,并且学习成本不高,那么多掌握一门技能,百利而无一害。

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