# Android_FakeBiliBili **Repository Path**: lduml/Android_FakeBiliBili ## Basic Information - **Project Name**: Android_FakeBiliBili - **Description**: 来自 https://github.com/TeamNB/FakeBiliBili - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-01-31 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FakeBiliBili 技术简介 ## MVP https://www.bilibili.com/video/av7480540?t=2695 ## RxJava2-完整攻略 https://blog.csdn.net/z69183787/article/details/90675373 RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava 编写的代码的逻辑会非常简洁。 RxJava 有以下三个基本的元素: 被观察者(Observable) 观察者(Observer) 订阅(subscribe) ## Android Retrofit详解 https://www.jianshu.com/p/865e9ae667a0 Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装 ## Dagger2 https://www.jianshu.com/p/16bfccf50a11 对Dagger2 的自我理解: 不使用Dagger2 时,我们一般如何创建提供对象: 创建一个静态对象,类似: XXXHelper.getInstance.getData()。这是全局静态的对象。 还可以通过实现MyApplication类来创建对象,通过类似 (MyApplication) getApplication() 来获取MyApplication对象,这样就可以提供全局单例了。 类似FragmentActivity 需要提供对象多个Fragment时,我们还可以通过参数传递的方式,把FragmentActivity的某个数据对象传递给 Fragment,这样多个Fragment可以使用相同的FragmentActivity的数据。这是局部单例。 当然上面所说的对象,不要局限于类似POJO类或者JavaBean之类的,也会是某些复杂的逻辑类。比如NetManager,DBManager等。 Dagger2 的主要作用: 就是为了简化上面的提供获取对象的方式 说的再高大上一些,就是使用MVP模式,解耦合,因为上面创建对象的方式,调用的地方和实现的地方基本是完全耦合的,一但数据对象发生改变,调用的地方也要调整。 学习Dagger2 都是为了DaggerAndroid扩展库打基础的,如果要单独使用Dagger2来进行Android研发,请放弃这个念头,会写很多重复的代码,而且任何的修改,一旦引发编译错误,查找和定位问题,会让你有砸电脑的冲动!!! ## ButterKnife介绍 https://www.jianshu.com/p/ac6ee4760385 ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。 ButterKnife项目地址:https://github.com/JakeWharton/butterknife ButterKnife的优势: 1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率 2、方便的处理Adapter里的ViewHolder绑定问题 3、运行时不会影响APP效率,使用配置方便 4、代码清晰,可读性强 ## Fresco 网络图片加载 https://www.fresco-cn.org ## 从零开始:优化代码之MultiTypeAdapter https://blog.csdn.net/AlaFighting/article/details/100228386 Android 开发中经常会需要显示列表,目前 Google 官方推荐的显示方案是:RecyclerView + Adapter。 RecyclerView 并没有太复杂的属性配置;所以,要实现列表的展示及相关逻辑,我们主要的工作内容是实现自己的 Adapter。 # 项目 一款基于 **MVP+RxJava2+Retrofit+Dagger2+Butterknife+Fresco+MultitypeAdapter+MD** 的仿 B 站设计风格客户端 > 项目地址:[https://github.com/TeamNB/FakeBiliBili](https://github.com/TeamNB/FakeBiliBili) [Demo下载](https://github.com/TeamNB/FakeBiliBili/raw/master/FakeBiliBili_demo.apk) 目前完成**主页UI**以及**直播页**的部分UI(播放器和弹幕) 这个项目完全出自个人爱好,平常也是个b站重度用户。以后会不定期更新~大家多提意见多交流 觉得还不错就给个star吧 ( ̄▽ ̄)~* ### Version 1.1.0 * 架构搭建 * 分析 Api * 完成主页界面 ### Version 1.2.0 * 完成直播播放页面 + 集成IjkPlayer并简易封装 + 集成DanmakuFlameMaster和来自[czp3009](https://github.com/czp3009)的[bilibili-api](https://github.com/czp3009/bilibili-api)完成弹幕功能 * 一些开源库的更新 ### 前期准备 * 反编译资源文件 * [mitmproxy](https://mitmproxy.org/)抓取 Api(支持https) * 获得 B 站 signKey 签名逻辑 * 框架搭建 ### 用到的开源库 * [RxJava2](https://github.com/ReactiveX/RxJava) 最coooooool的响应式编程框架 * [RxLifecycle](https://github.com/trello/RxLifecycle) 解决Rxjava内存泄漏 * [Retrofit](https://github.com/square/retrofit) 最流行的Android网络请求的框架 * [Okhttp3](https://github.com/square/okhttp) 和Retrofit搭配,项目中签名逻辑使用该库的拦截器模块实现 * [Dagger2](https://github.com/google/dagger) 门槛略高但功能强大的依赖注入框架 * [Butterknife](https://github.com/JakeWharton/butterknife) 绑定View的依赖注入框架 * [Eventbus](https://github.com/greenrobot/EventBus) 组件间通信 * [Fresco](https://github.com/facebook/fresco) 图片的加载和处理,功能强大,但相比其他图片库有点大 * [Fragmentation](https://github.com/YoKeyword/Fragmentation) 简化Fragment操作并填坑的库 * [Multitype](https://github.com/drakeet/MultiType) RecyclerView多类型库 * [IjkPlayer](https://github.com/Bilibili/ijkplayer) b站出品基于FFmpeg的开源视频播放框架 * [DanmakuFlameMaster](https://github.com/Bilibili/DanmakuFlameMaster) 烈焰弹幕使-b站开源弹幕解析绘制引擎项目 更多内容请看这里 [FakeBiliBili 系列 (启动篇)](http://www.jianshu.com/p/b3b9e13bd842) ### 成果展示
直播 推荐 追番 分区 侧滑
![直播页](http://image-repository.oss-cn-beijing.aliyuncs.com/live_page.gif)       ![数据列表](http://image-repository.oss-cn-beijing.aliyuncs.com/LoadMore.gif)