昨日,阿里巴巴文化娱乐集团宣布土豆网全面转型为短视频平台,准备投入20亿打造“大鱼计划”,原UC订阅号、优酷自频道账号统一升级为大鱼号。同时,淘宝将推出Channel T,为土豆平台内容的创作者提供了覆盖 淘宝二楼、淘宝台、短视频全淘 融入的三层合作模式。此外,土豆还公布了海外计划,5月将推出面向亚洲市场的短视频App“tudoo”。
作者简介本篇来自 陈嘉桐 的投稿,分享了自己实现的一个拍照与录短视频的控件,希望能够帮助到大家。另外,预祝大家都可以享受一个好的假期,休息和放松一下,我们下周三再见面!
陈嘉桐 的博客地址:
控件介绍https://github.com/CJT2325
不知道是不是在微信更新到6.0版本之后,微信将它的拍照和录制视频的功能集合到同一个界面,通过点击与长按来分别执行拍照和录制小视频的功能,真的不得不感叹那些大牛的想法是多么天马行空。虽然我没有他们的想法那么超前,但是我还是尽了自己的能力去模仿他们的微信拍照界面,并且将它们组件化,让需要用到的人轻松使用。
首先先介绍一下该控件的功能,这是一个模仿微信拍照的开源控件,主要的功能有如下:
点击拍照。
前后摄像头的切换。
长按录视频(视频长度为10秒内)。
长按录视频的时候,手指上滑可以放大视频。
录制完视频可以浏览并且重复播放。
可以设置小视频保存路径。
涉及的知识点
-
自定义View肯定不用多说啦 (拍照与录制视频的按钮) :
1. CaptureButton (继承View)
2. JCameraView (继承RelativeLayout)
Camera (拍照)
MediaRecorder (录制小视频)
VideoView (小视频的浏览)
遇到的难点
刚开始,在 CaptureButton 的自定义View中要实现点击与长按的功能,突然想到不能直接继承 OnLongClickListener 来实现长按,最后通过调用一个线程的方法来解决。
录制完小视频后的重复播放,刚开始我是用 SurfaceView 去浏览 Camera,但是后续发现 VedioView 是继承自 SurfaceView 同时还有播放视频的功能,所以就想可不可以用 VedioView 来代替 SrufaceView。
首先通过 MediaRecorder 录制视频:
录制成功之后使用 VedioView 来重复播放视频:
代码我相信也看得不耐烦了,最后还是通过GIF图来看看效果:
GIF有点卡顿
使用步骤(Android Studio)
添加下列代码到Project gradle
添加下列代码到Module gradle
compile 'cjt.library.wheel:camera:0.0.7'
布局文件中添加
AndroidManifest.xml中添加权限
Activity设置为全屏
初始化JCameraView控件
JCameraView生命周期
备注
该项目可能存在着许多的BUG,并且代码逻辑可能不太严谨,但是从中是我从中还是获得了许多快乐,BUG的解决,完整的运行让我刚到相当有成就感,同时我将它开源出来供大家一起学习,所谓独乐乐不如众乐乐,也可以让快步入社会的我到时候面试的多一份底气。(最后想请教一下前置摄像头录视频的时候如何将视频水平翻转)
项目地址:
更多https://github.com/CJT2325/CameraView
每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。
如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。
欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号: