Android仿微信拍照控件

作者简介  原创微信公众号郭霖 WeChat ID: guolin_blog

本篇来自陈嘉桐的投稿,分享了自己实现的一个拍照与录短视频的控件,希望能够帮助到大家。另外,预祝大家都可以享受一个好的假期,休息和放松一下,我们下周三再见面!

陈嘉桐的博客地址:

https://github.com/CJT2325

控件介绍

不知道是不是在微信更新到6.0版本之后,微信将它的拍照和录制视频的功能集合到同一个界面,通过点击与长按来分别执行拍照和录制小视频的功能,真的不得不感叹那些大牛的想法是多么天马行空。虽然我没有他们的想法那么超前,但是我还是尽了自己的能力去模仿他们的微信拍照界面,并且将它们组件化,让需要用到的人轻松使用。

首先先介绍一下该控件的功能,这是一个模仿微信拍照的开源控件,主要的功能有如下:

点击拍照。

前后摄像头的切换。

长按录视频(视频长度为10秒内)。

长按录视频的时候,手指上滑可以放大视频。

录制完视频可以浏览并且重复播放。

可以设置小视频保存路径。

涉及的知识点

自定义View肯定不用多说啦 (拍照与录制视频的按钮) :

1.CaptureButton (继承View)

2.JCameraView (继承RelativeLayout)

Camera (拍照)

MediaRecorder (录制小视频)

VideoView (小视频的浏览)

遇到的难点

刚开始,在 CaptureButton 的自定义View中要实现点击与长按的功能,突然想到不能直接继承 OnLongClickListener 来实现长按,最后通过调用一个线程的方法来解决。

《Android仿微信拍照控件》

录制完小视频后的重复播放,刚开始我是用 SurfaceView 去浏览 Camera,但是后续发现 VedioView 是继承自 SurfaceView 同时还有播放视频的功能,所以就想可不可以用 VedioView 来代替 SrufaceView。

首先通过 MediaRecorder 录制视频:

《Android仿微信拍照控件》

录制成功之后使用 VedioView 来重复播放视频:

《Android仿微信拍照控件》

代码我相信也看得不耐烦了,最后还是通过GIF图来看看效果:

《Android仿微信拍照控件》

GIF有点卡顿

使用步骤(Android Studio)

添加下列代码到Project gradle

《Android仿微信拍照控件》

添加下列代码到Module gradle

compile’cjt.library.wheel:camera:0.0.7′

布局文件中添加

《Android仿微信拍照控件》
《Android仿微信拍照控件》

AndroidManifest.xml中添加权限

《Android仿微信拍照控件》

Activity设置为全屏

《Android仿微信拍照控件》

初始化JCameraView控件

《Android仿微信拍照控件》

JCameraView生命周期

《Android仿微信拍照控件》

备注

该项目可能存在着许多的BUG,并且代码逻辑可能不太严谨,但是从中是我从中还是获得了许多快乐,BUG的解决,完整的运行让我刚到相当有成就感,同时我将它开源出来供大家一起学习,所谓独乐乐不如众乐乐,也可以让快步入社会的我到时候面试的多一份底气。(最后想请教一下前置摄像头录视频的时候如何将视频水平翻转

项目地址:

https://github.com/CJT2325/CameraView

文章原创作者GuoLin 书籍推荐

郭林大神原创android 书籍:《第一行代码 android》

《Android仿微信拍照控件》

淘宝链接:

https://s.click.taobao.com/t?e=m%3D2%26s%3DgKUfuKdAZKocQipKwQzePOeEDrYVVa64K7Vc7tFgwiHjf2vlNIV67p2n%2BQBNMyE6Rku8%2Bpj6eJall3bs%2B3NRhNHnsKI%2BqxhyM0iVZhTFBom4YIorMPnmg8G0g2OJi%2FzmXHfenomYtn5EW9vzeG8LzfPUwktUBEmkxg5p7bh%2BFbQ%3D&pvid=10_106.6.161.154_3367_1490163222155

    原文作者:木木00
    原文地址: https://www.jianshu.com/p/47c418904560
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞