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 来实现长按,最后通过调用一个线程的方法来解决。

录制完小视频后的重复播放,刚开始我是用 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


文章原创作者GuoLin 书籍推荐

郭林大神原创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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 155,869评论 24 680
  • 谁不是一个人的时候,撑起自己的一片天。 失恋了,装着若如无其事的样子和朋友聊天,唱歌,吃饭,其实心里的痛还是要一个...
    花一样的生活阅读 293评论 0 0
  • 乖,抱抱! 第一次遇见你,在阳光明媚的下午,哎对不起,呦没关系,转身四目相对的刹那,适逢其会的遇见,一眼万年...
    洛小贝阅读 116评论 0 0
  • 秋风秋叶,秋色摇曳, 枫叶飘下一片, 在忧伤的季节。 金黄铺满青春的街, 回首时多么亲切。 前方是梦想的驿站, 这...
    以下范上阅读 93评论 0 1