仿:Android - 微信 - 朋友圈 - 小视频播放,多4句废话算我输

做者:林冠宏 / 指尖下的幽灵 掘金:juejin.im/user/587f0d… 博客:www.cnblogs.com/linguanh/ GitHub : github.com/af913337456…git

为了您的直观体验,请务必看完下面 gif 图,源码 gitHub 连接在其以后。github

作这个东西的目的是: 完善毕设: 一个没依赖各类云,而使用C++和Golang作后端的仿微信APP后端


为了不你们浪费时间,直接先看下面的 Gif,略大,请耐心点。看完后,若你以为会须要到,那么就请听我继续。缓存

git显示,略大,请耐心微信

demo

GitHub 连接

废话一句:这个显示只是其中一部分,重点是:FFmpeg + Camera 的录制部分,因此,你的星星(star)也是一种更新通知 (我通知你)。网络

github.com/af913337456…ide

功能点

若是你看完上面的gif图,你会发现以下几点功能 (Function list):this

1,直观的3d

  • 播放前,能够显示封面缩略图
  • 播放时,若是尚未本地缓存,那么先进行下载
  • 下载过程当中,显示圆型区域进度效果
  • 下载后,播放完毕后能够循环播放
  • 播放已经播放过的,是具有本地缓存的,也就是既能播放网络,也能播放本地

2,隐藏的code

  • 低耗电量
  • 低内存占用
  • 无延迟图与视频切换
  • 低耦合,高内聚,几行代码接入,一共3个类

解析

直观的功能点,几乎就是和新版微信的同样,从朋友圈点击一个视频,而后进入到一个 Activity 页面进行加载以及播放。

为何低耗电量和低内存占用?

由于采用的是 SurfaceView 而不是 TextureView,图与视频切换的切换延迟也是这个缘由。

在你的 Activity 中这样使用

这样就会以 id 为 activity_main 的 Relativelayout 为父容器装载。 由于要避免内存泄露,因此你还须要作完下面的一些步骤,不会超过6行代码。

技术点 (能够不看)

1,下载操做:

自定义 AsyncTask。PS:AsyncTask 比 Thread + handler 重量级却方便(回调进度),可是,若是是 即放即用,结束即销毁,那么,no need to think about this;

2,视频播放组合拳: surfaceView + mediaPlayer

surfaceView 用做显示,mediaPlayer 用来解码 二者关系: mediaPlayer 绑定 surfaceView。

为何不用 TextrueView?
3,进度区域

自定义 View,3个画笔绘制,一个圆,一个边,一个扇区。

相关文章
相关标签/搜索