Skip to content

Latest commit

 

History

History
293 lines (231 loc) · 20.9 KB

03.开源项目推荐.md

File metadata and controls

293 lines (231 loc) · 20.9 KB

目录介绍

  • 1.开源项目思维导图
  • 2.开源综合案例
  • 3.视频播放器封装库
  • 4.状态切换管理器封装库
  • 5.复杂类型type封装库
  • 6.自定义弹窗封装库
  • 7.版本更新封装库
  • 8.状态栏封装库
  • 9.开源轻量级线程池封装库
  • 10.开源轮播图封装库
  • 11.开源音频播放器
  • 12.开源画廊与图片缩放控件
  • 13.Python多渠道打包
  • 14.list页面item整体侧滑动画封装库
  • 15.开源工具常用类封装库
  • 16.Python爬虫妹子图
  • 17.自定义百分比进度条

好消息

  • 博客笔记大汇总【16年3月到至今】,包括Java基础及深入知识点,Android技术博客,Python学习笔记等等,还包括平时开发中遇到的bug汇总,当然也在工作之余收集了大量的面试题,长期更新维护并且修正,持续完善……开源的文件是markdown格式的!同时也开源了生活博客,从12年起,积累共计N篇[近100万字,陆续搬到网上],转载请注明出处,谢谢!
  • 链接地址:https://github.com/yangchong211/YCBlogs
  • 如果觉得好,可以star一下,谢谢!当然也欢迎提出建议,万事起于忽微,量变引起质变!

1.开源项目思维导图

image.png

2.开源综合案例

  • 如果你感觉还行,请给一个star,如果你觉得哪里有问题,也可以直接把问题提给我,我会修改的。业余的小案例,定期更新,持续更新
  • 代码地址:https://github.com/yangchong211/LifeHelper
  • 说明及截图
  • 模块:新闻,音乐,视频,图片,唐诗宋词,快递,天气,记事本,阅读器等等
  • 接口:七牛,阿里云,天行,干货集中营,极速数据,追书神器等等
  • 架构:采用MVP+Rx+Retrofit+Desgin+Dagger2+阿里VLayout+腾讯X5等架构模式。
  • 写于16年,当时主要是为了练手,其中购买的许多阿里云数据接口很多已经用完了,由于精力有限暂停更新

3.视频播放器封装库

  • 项目简介
    • 视频播放器封装库案例,仿照优酷,爱奇艺视频播放器,可以添家视频观看权限,试看模式,类似优酷试看功能。基于ijkplayer,支持网络视频或者本地视频播放,滑动调节亮度或者音量,快进快退,记录播放位置。可以设置边观看变缓存,支持全屏播放,小窗口,正常播放等模式;还支持列表播放,切换分辨率,还可以自定义视频播放器,拓展性强
  • 封装思路
  • 代码地址:
  • 项目功能
    • A基础功能
    • A.1.1 能够自定义视频加载loading类型,设置视频标题,设置视频底部图片,设置播放时长等基础功能
    • A.1.2 可以切换播放器的视频播放状态,播放错误,播放未开始,播放开始,播放准备中,正在播放,暂停播放,正在缓冲等等状态
    • A.1.3 可以自由设置播放器的播放模式,比如,正常播放,全屏播放,和小屏幕播放。其中全屏播放支持旋转屏幕。
    • A.1.4 可以支持多种视频播放类型,比如,原生封装视频播放器,还有基于ijkPlayer封装的播放器。
    • A.1.5 可以设置是否隐藏播放音量,播放进度,播放亮度等,可以通过拖动seekBar改变视频进度。还支持设置n秒后不操作则隐藏头部和顶部布局功能
    • A.1.6 可以设置竖屏模式下全屏模式和横屏模式下的全屏模式,方便多种使用场景
    • A.1.7 top和bottom面版消失和显示:点击视频画面会显示、隐藏操作面板;显示后不操作会5秒后自动消失【也可以设置】
    • B高级功能
    • B.1.1 支持一遍播放一遍缓冲的功能,其中缓冲包括两部分,第一种是播放过程中缓冲,第二种是暂停过程中缓冲
    • B.1.2 基于ijkPlayer的封装播放器,支持多种格式视频播放
    • B.1.3 可以设置是否记录播放位置,设置播放速度,设置屏幕比例
    • B.1.4 支持滑动改变音量【屏幕右边】,改变屏幕亮度【屏幕左边】,屏幕底测左右滑动调节进度
    • B.1.5 支持list页面中视频播放,滚动后暂停播放,播放可以自由设置是否记录状态。并且还支持删除视频播放位置状态。
    • B.1.6 切换横竖屏:切换全屏时,隐藏状态栏,显示自定义top(显示电量);竖屏时恢复原有状态
    • B.1.7 支持切换视频清晰度模式
    • B.1.8 添加锁屏功能,竖屏不提供锁屏按钮,横屏全屏时显示,并且锁屏时,屏蔽手势处理
    • C拓展功能【这块根据实际情况选择是否需要使用,一般视频付费App会有这个工鞥】
    • C1产品需求:类似优酷,爱奇艺视频播放器部分逻辑。比如如果用户没有登录也没有看视频权限,则提示试看视频[自定义布局];如果用户没有登录但是有看视频权限,则正常观看;如果用户登录,但是没有充值会员,部分需要权限视频则进入试看模式,试看结束后弹出充值会员界面;如果用户余额不足,比如余额只有99元,但是视频观看要199元,则又有其他提示。
    • C2自身需求:比如封装好了视频播放库,那么点击视频上登录按钮则跳到登录页面;点击充值会员页面也跳到充值页面。这个通过定义接口,可以让使用者通过方法调用,灵活处理点击事件。
    • C.1.1 可以设置试看模式,设置试看时长。试看结束后就提示登录或者充值……
    • C.1.2 对于设置视频的宽高,建议设置成4:3或者16:9或者常用比例,如果不是常用比例,则可能会有黑边。其中黑边的背景可以设置
    • C.1.3 可以设置播放有权限的视频时的各种文字描述,而没有把它写在封装库中,使用者自己设定
    • C.1.4 锁定屏幕功能
    • C.1.5 支持视频小窗口拖拽功能,可以在应用内随意拖拽,单击点击是播放和暂停切换;长按是拖动处理
    • 具体详细的开发说明文档,可以直接查看上面链接说明,如果觉得好,欢迎star

4.状态切换管理器封装库

5.复杂类型type封装库

6.自定义弹窗封装库

  • 自定义对话框,其中包括:仿ios底部弹窗;自定义Toast;自定义DialogFragment弹窗(功能很强大),自定义PopupWindow弹窗【采用builder模式,可以自定义位置,背景,自定义布局(支持嵌套recyclerView)等等,拓展性强】,目前已经用于新芽和投资界正式项目中。!
  • 代码地址:https://github.com/yangchong211/YCDialog
  • 说明及截图
  • 具体详细的开发说明文档,可以直接查看上面链接说明

7.版本更新封装库

  • 项目介绍
    • 轻量级版本更新弹窗,弹窗上支持更新进度条,可以设置普通更新或者强制更新。解决8.0以上通知栏不显示问题,解决7.0以上安装apk异常,下载完成则会自动提示安装;下载异常,失败,错误等状态,支持重启下载任务;还支持自定义下载路径。代码量少,调用简单……
  • 具备优势
    • 支持后台下载,支持断点下载。支持监听下载过程,下载成功,失败,异常,下载中,暂停等多种状态
    • 用户可以设置是否支持强制更新,还支持用户设置版本更新内容,当内容过长,可以实现滚动模式
    • 支持进度条显示,对话框进度条,并且下载中支持通知栏进度条展示,解决8.0通知栏不显示问题
    • 由于下载apk到本地需要权限,固在lib中已经处理这个逻辑,只有当有读写权限时才会下载文件,没有权限则跳转设置页面打开权限
    • 调用十分简单,相比AppUpdate,CheckVersionLib等库的特点是不用设置http的get或者post请求,只需要传入下载链接就可以
    • 相比GitHub上几个主流的版本更新库,我这个lib代码量少很多,我觉得最少最精简的代码完成需要的功能就最好
    • 适配 Android 7.0 FileProvider,处理了7.0以上安装apk异常问题,在lib中已经配置了fileProvider,直接使用就可以
    • 使用dialogFragment替换了dialog,处理了重建后逻辑,dialogFragment深入分析博客
    • 下载完成后自动安装,对于错误的下载链接地址,会下载异常,也可以查看异常的日志
    • 当下载完成后,再次弹窗,则会先判断本地是否已经下载,如果下载则直接提示安装
    • 支持设置自定义下载文件路径,如果不设置,则直接使用lib中的路径【sd/apk/downApk目录下】
    • 当apk下载失败,异常,错误等状态,支持重启下载任务。功能十分强大,已经用于正式app多时,你采用拿来主义使用即可,欢迎提出问题。
    • 弹窗DialogFragment异常时调用onSaveInstanceState保存状态,重启时取出状态
  • 代码地址

8.状态栏封装库

  • 关于状态栏方案总结案例,适合于绝大多数的使用场景……积累了业余阅读代码中的状态栏工具类,并且整理和去除了无效的代码。已经用于实际项目投资界,新芽,沙丘大学等APP,一键集成并使用!支持单Activity多Fragment动态修改状态栏颜色,入侵性低,一行代码即可实现你需要的需求
  • 代码地址:https://github.com/yangchong211/YCStatusBar

9.开源轻量级线程池封装库

  • 项目简介
    • 轻量级线程池封装库,支持线程执行过程中状态回调监测(包含成功,失败,异常等多种状态);支持创建异步任务,并且可以设置线程的名称,延迟执行时间,线程优先级,回调callback等;可以根据自己需要创建自己需要的线程池,一共有四种;线程异常时,可以打印异常日志,避免崩溃
  • 项目优势:
    • 重用线程池中的线程,避免频繁地创建和销毁线程带来的性能消耗;有效控制线程的最大并发数量,防止线程过大导致抢占资源造成系统阻塞;可以对线程进行一定地管理。
    • 支持线程执行过程中状态回调监测(包含成功,失败,异常等多种状态)
    • 支持线程异常检测,并且可以打印异常日志
    • 支持设置线程属性,比如名称,延时时长,优先级,callback
    • 支持异步开启线程任务,支持监听异步回调监听
    • 方便集成,方便使用,可以灵活选择创建不同的线程池
  • 代码位置
  • 关于线程池封装笔记博客,共计3篇

10.开源轮播图封装库【支持引导页】

  • 轮播图,支持多种自定义属性,可以设置轮播红点或者轮播数字,支持设置引导页。可以根据不同使用场景,可以选择无限循环,静态管理或者动态管理adapter。还可以设置暂停和开始轮播。目前已经用于投资界,新芽等正式项目中!!
  • 主要功能
  • 1.1 自定义轮播图,可以设置轮播红点或者轮播数字,多种指示器,并且灵活设置位置
  • 1.2 支持多种轮播图适配器,无限轮播adapter,静态管理adapter,和动态管理adapter。支持多种场合使用。
  • 1.3 支持自定义hintView,十分灵活,拓展性强
  • 1.4 无限循环自动轮播、手指按下暂停轮播、抬起手指开始轮播
  • 1.5 优化:在页面onPause中调用停止轮播,在页面onResume中调用开始轮播
  • 1.6 支持监听item点击事件,支持轮播图中ViewPager的滑动监听事件
  • 1.7 不仅支持轮播图,还支持引导页面,十分方便
  • 代码位置
  • https://github.com/yangchong211/YCBanner

11.开源音频播放器

1.关于音频基础博客

14.list页面item整体侧滑动画封装库

13.Python多渠道打包

  • 项目介绍
    • 瓦力多渠道打包的Python脚本测试工具,通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快。配置信息十分简单,代码中已经注释十分详细。可以自定义输出文件路径,可以修改多渠道配置信息,简单实用。
  • 该库优势
    • 通过该自动化脚本,自需要run一下或者命令行运行脚本即可实现美团瓦力多渠道打包,打包速度很快
    • 配置信息十分简单,代码中已经注释十分详细。Keystore信息一定要配置,至于渠道apk输出路径,文件配置路径等均有默认路径,没有配置也没关系
    • 针对输出路径是根目录下的output文件夹,文件不存在则创建,文件存在则是先删除之前多渠道打包生成的【也就是删除output文件夹下所有文件】,然后在重新生成
    • 多渠道的定义是在channel这个文件中,建议是txt文件格式,你可以根据项目情况修改,十分快捷
    • 如果瓦力打包工具更新了,直接替换一下lib中的jar即可。可以在python3.x上跑起来!
  • 项目地址

15.开源工具常用类封装库

  • 开发过程中常用功能总结,包括自定义模糊视图,Loading加载,自定义Switch控件,自定义webview,支持滑动监听,并且优雅处理302重定向和处理回退栈问题,优雅处理Fragment返回监听,自定义ScrollView常用控件等等。
  • 代码地址:https://github.com/yangchong211/YCUtils
  • 说明及截图
  • 具体详细的开发说明文档,可以直接查看上面链接说明

16.Python爬虫妹子图

  • 学习python爬虫,爬了meizi网站图片,请勿商用。同时分享了部分爬到的图片,仅供欣赏一下。python爬虫特别好玩,主要是练习一下写代码。
  • 项目地址:https://github.com/yangchong211/YCMeiZiTu

17.自定义百分比进度条

  • 项目介绍
    • 自定义进度条,包括圆环型百分比进度条,直线型百分比进度条,还有仿360杀毒百分比进度条。可以自由设置进度条的类型,外部轮廓颜色,中心圆颜色,自定义百分比单位属性,进度条颜色等等。带有进度监听,可以设置百分比。使用于的场景有:启动页倒计时,下载进度条展示,杀毒进度条展示……
  • 该库优势
    • 圆环百分比进度条
      • 简便且小巧,支持设置多种属性。可以设置内圆和外圆的颜色,设置圆环的边缘宽度。
      • 支持设置倒计时总时间,可以调用start开始倒计时,也可以调用stop暂停倒计时,也可以自定义设置进度
    • 仿杀毒类型百分比进度条
      • 支持设置多种类型,比如设置百分比+单位类型,或者设置空类型【也就是不显示中间百分比】
      • 支持设置进度条的颜色,未更新的进度条颜色;设置百分比文字大小,颜色;支持设置单位等多种属性
      • 支持允许多线程访问,对于设置setProgress,添加synchronized关键字修饰。设置进度progress,如果小于0或者大于100,则抛异常。避免开发者使用造成其他问题。
    • 直线百分比进度条
      • 支持设置百分比进度条的文本大小,字体颜色,以及百分比进度条更新部分和未更新部分的颜色
      • 支持设置进度条的高度,可以设置进度条的最大值,设置进度条进度,还支持设置百分比文字是否可见
      • 可以设置倒计时总时间,可以设置开始,暂停,重新开始等。支持百分比进度条进度监听
    • 进度条其他共同属性
      • 针对进度条,对于设置color颜色的方法,增加了注解@ColorInt,限制开发者调用color资源
      • 使用注解代替了枚举,针对设置枚举的方法,使用注解限制开发者调用时传入的类型。具体可见代码案例!
      • 注释十分详细,作为开源的lib库,我觉得要让使用者一目了然。方便调用同时,知道每个方法的作用。
      • 代码量少,如果想学习并深入自定义控件,可以从简单开始。这个项目就很符合!
  • 代码位置

其他介绍

01.关于博客汇总链接

02.关于我的博客