Android高仿微信拍照控件,实战推荐!
热文导读 | 点击标题阅读
作者:陈嘉桐
转自:ttps://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
如你有好的文章想和大家分享欢迎投稿,直接向我投递文章链接即可
Java和Android架构
微信扫描或者点击下方二维码领取Android\Python\AI\Java等高级进阶资源
关注后回复“百度”、“阿里”、“腾讯”、“资源”有惊喜
公众号:JANiubility
欢迎加入我们的Java和Android架构圈,已有近1000人加入学习交流,更多学习资源更新,更多交流进步
更多学习资料点击下面的“阅读原文”获取