zoukankan      html  css  js  c++  java
  • 仿:Android

    作者:林冠宏 / 指尖下的幽灵
    掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8
    博客:http://www.cnblogs.com/linguanh/
    GitHub : https://github.com/af913337456/

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

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


    为了避免大家浪费时间,直接先看下面的 Gif,略大,请耐心点。看完后,若你觉得会需要到,那么就请听我继续。

    gif 链接 http://123.57.244.105:8081/commentthumb/GIF.gif
    git显示,略大,请耐心

    GitHub 链接

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

    https://github.com/af913337456/WeChatVideoView

    功能点

    如果你看完上面的gif图,你会发现如下几点功能 (Function list):

    1,直观的

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

    2,隐藏的

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

    解析

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

    为什么低耗电量和低内存占用?

    因为采用的是 SurfaceView 而不是 TextureView,图与视频切换的切换延迟也是这个原因。

    在你的 Activity 中这样使用


    这样就会以 id 为 activity_main 的 Relativelayout 为父容器装载。
    因为要避免内存泄露,所以你还需要做完下面的一些步骤,不会超过6行代码。
    git显示,略大,请耐心

    技术点 (可以不看)

    1,下载操作:

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

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

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

    为什么不用 TextrueView?
    3,进度区域

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

  • 相关阅读:
    (Good Bye 2019) Codeforces 1270B Interesting Subarray
    (Good Bye 2019) Codeforces 1270A Card Game
    Codeforces 1283D Christmas Trees(BFS)
    Codeforces 1283C Friends and Gifts
    Codeforces 1283B Candies Division
    1095 Cars on Campus (30)
    1080 Graduate Admission (30)
    1099 Build A Binary Search Tree (30)
    1018 Public Bike Management (30)
    1087 All Roads Lead to Rome (30)
  • 原文地址:https://www.cnblogs.com/linguanh/p/6770391.html
Copyright © 2011-2022 走看看