不可错过的几款GitHub开源项目

工作之余或者周末感觉无聊?不知道干什么?想继续提高技术,但是不知道做什么的同学,看过来,不妨利用闲暇时间来撸几个 GitHub 上还不错的开源项目,本文推荐的开源项目比较适合新手、及对MVP设计模式不太熟练的同学练习之用,下面逐一进行简单介绍。

1.ZhiHuMVP

一款采用 MVP 模式的仿知乎客户端。

本项目包含以下知识点:

  • MVP架构思想
  • Retrofit RESTful API 框架的配合
  • RxJava 响应式编程
  • Butter Knife:通过注解绑定 View
  • 夜间模式切换

效果图:

这里写图片描述

https://github.com/fangx/ZhiHuMVP

2.ColorfulNews

一个 Material Design 风格的新闻阅读 App,采用 MVP 模式,基于 Dagger2+RxJava+Retrofit2进行开发。

主要用到的开源库:

  • Dagger2
  • RxJava
  • Retrofit2
  • Butterknife
  • Greendao
  • PhotoView
  • Glide
  • Picasso

效果图:

这里写图片描述

https://github.com/kaku2015/ColorfulNews

3.boxing

Bilibili 开源的基于MVP模式的 Android 多媒体选择器。

特性:

  • 支持自定义UI
  • 支持多/单图片选择和预览,单图裁剪功能
  • 支持gif
  • 支持视频选择功能
  • 提供图片压缩
  • 多图生成gif(checkout feature/gif-encode)

效果图:

这里写图片描述

https://github.com/Bilibili/boxing

4.MinimalistWeather

MinimalistWeather 是 Android 平台上一款开源天气 App ,目前还在开发中。项目基于 MVP 架构,采用各主流开源库实现。开发此项目主要是为展示各种开源库的使用方式以及 Android 项目的设计方案,并作为团队项目开发规范的一部分。

采用的开源库包括:

  • RxJava
  • Retrofit2
  • OKHttp3
  • ORMLite
  • Dagger2
  • ButterKnife
  • RetroLambda
  • Stetho

本项目还展示了:

  • MVP+RxJava在实际项目中的应用,MVP中RxJava生命周期的管理…;
  • 上述罗列的各种开源框架的使用方法;
  • Java8 Lambda表达式和Stream API的用法;
  • 怎样适配Material Design;
  • ToolBar、RecycleView、CardView、CoordinatorLayout等新控件的用法;
  • Gradle的基本配置(包括签名打包、项目依赖等等);
  • 如何更好的管理Gradle依赖库的版本;
  • 代码混淆配置;
  • 如何快速开发一款结构清晰、可扩展性强的Android Application。

https://github.com/BaronZ88/MinimalistWeather

5.TranslateApp

一个实现 『划词翻译』 功能的 Android 应用 ,可能是目前 Android 市场上翻译效率最高的一款应用。

技术点:

  • 全程使用 Dagger2 对项目进行类依赖管理
  • 项目使用标准的 MVP 架构,关于 MVP 的一篇博客
  • 实现对粘贴板的监听以及访问
  • 无需权限显示悬浮窗(6.0悬浮窗权限适配)
  • 使用 RxJava 探索函数式编程
  • 使用 Retrofit2 进行网络请求
  • 开机自启动
  • Android 6.0 自定义文本操作栏

效果图:

这里写图片描述

https://github.com/maoruibin/TranslateApp

6.Ghost

微影,一款纯粹的在线视频App,基于Material Design + MVP + Dagger2 + RxJava + Retrofit + Realm + Glide。

技术点:

  • 使用RxJava配合Retrofit2做网络请求
  • 使用RxUtil对线程操作和网络请求结果处理做了封装
  • 使用RxPresenter对订阅的生命周期做管理
  • 使用AndroidEventBus来方便组件间的通信
  • 使用Material Design控件和动画
  • 使用MVP架构整个项目,对应于model、ui、presenter三个包
  • 使用Realm做阅读记录和收藏记录的增、删、查、改
  • 使用Glide做图片的处理和加载
  • 使用RecyclerView实现下拉刷新、上拉加载、侧滑删除、长按拖曳
  • 支持主题设置
  • 包含搜索、收藏、历史等功能

效果图:

这里写图片描述

https://github.com/GeekGhost/Ghost

7.GeekNews

极客日报,一款纯粹的阅读App,基于Material Design + MVP + RxJava2 + Retrofit + Dagger2 + Realm + Glide。

技术点:

  • 使用RxJava配合Retrofit2做网络请求
  • 使用RxUtil对线程操作和网络请求结果处理做了封装
  • 使用RxPresenter对订阅的生命周期做管理
  • 使用RxBus来方便组件间的通信
  • 使用RxJava其他操作符来做延时、轮询、转化、筛选等操作
  • 使用okhttp3对网络返回内容做缓存,还有日志、超时重连、头部消息的配置
  • 使用Material Design控件和动画
  • 使用MVP架构整个项目,对应于model、ui、presenter三个包
  • 使用Dagger2将M层注入P层,将P层注入V层,无需new,直接调用对象
  • 使用Realm做阅读记录和收藏记录的增、删、查、改
  • 使用Glide做图片的处理和加载
  • 使用Fragmentation简化Fragment的操作和懒加载
  • 使用RecyclerView实现下拉刷新、上拉加载、侧滑删除、长按拖曳
  • 使用x5WebView做阅览页,比原生WebView体验更佳
  • 使用SVG及其动画实现progressbar的效果
  • 使用RxPermissions做6.0+动态权限适配
  • 使用Jsoup解析V2EX站点DOM
  • 使用原生的夜间模式、分享、反馈
  • 包含搜索、收藏、检测更新等功能
  • 所有踩到的坑都在项目里做了注释

效果图:

这里写图片描述

https://github.com/codeestX/GeekNews

8.MovieGuide

MovieGuide是一款受欢迎、高级别的电影Android应用,展示了预告片和评论等功能。采用了MVP模式、RxJava、Dagger 2 和 Bob Martin 的 Clean 架构方法,并针对平板电脑进行了优化。

效果图:

这里写图片描述

https://github.com/esoxjem/MovieGuide

9.SimpleNews

基于Material Design和MVP的新闻客户端。

效果图:

这里写图片描述

https://github.com/liuling07/SimpleNews

10.Toutiao

一款第三方今日头条客户端,遵循材料设计(Material Design), 聚合了新闻/段子/图片/视频/头条号内容, 没有广告, 仅仅只有存粹的阅读, 不断完善中, 采用 MVP + RxJava + Retrofit 架构的项目。

主要功能特性:

  • 首页五大模块: 新闻 / 图片 / 视频 / 头条号 / 问答
  • 实现首页的布局和数据的显示
  • 实现自定义新闻栏目顺序
  • 新闻详情页面支持日夜两种主题
  • 显示新闻评论
  • 头条号订阅 查看头条号历史文章 / 视频
  • 搜索功能 热门搜索推荐 搜索历史记录
  • 自定义主题颜色 无缝切换日夜皮肤
  • 视频播放
  • 内置3款 logo 随意互换
  • 动态切换字体大小

主要技术点:

  • 基本遵循 Material Design 设计风格
  • 抓包获取今日头条API
  • 使用 Google 官方 MVP 架构
  • DrawerLayout + NavigationView + BottomNavigationView 搭配使用
  • RxBus 代替 EventBus 进行组件之间通讯
  • ViewPager 搭配 Fragment 懒加载
  • SwipeRefreshLayout 搭配 RecyclerView 下拉刷新上拉加载
  • 自定义 BottomNavigationBehavior 实现上滑隐藏下滑显示
  • RxJava + Retrofit2 + OkHttp3 做网络请求
  • OkHttp3 对网络返回内容做缓存, 还有日志、超时重连、头部消息的配置
  • V层基类的构建, 包括 BaseActivity 和 BaseFragment , 对外提供了相同的接口
  • 使用原生的夜间模式
  • 解决侧滑返回与 View 冲突问题
  • 内置 3 款 Logo, 随意切换
  • 使用 CoordinatorLayout 、 AppBarLayout 、 CollapsingToolbarLayout 、 BottomSheetDialog 等新控件
  • 使用 7.0 新工具 DiffUtil , 不再无脑 notifyDataSetChanged
  • 使用 ItemTouchHelper 实现今日头条的频道排序、频道移动, 参考 ItemTouchHelperDemo
  • 使用 RxBinding 优雅实现搜索请求
  • 使用 AutoDispose 绑定 RxJava 生命周期
  • 使用 Travis Cl 持续集成

效果图:

这里写图片描述

https://github.com/iMeiji/Toutiao

11.PhotoNoter

Material Design风格的开源照片笔记。

主要技术点:

  • 整体项目MVP结构
  • Dagger2
  • 相机部分,API >= 21使用 Camera2 ,API < 21使用 Camera
  • 相机的状态机,聚焦状态机
  • 照片缓存分为两种,一个是大图,一个是小图,小图是相册界面缩略图的时候加载的,大图是查看图片的时候加载的
  • 图片处理
  • 沙盒
  • Activity 退出和进入的动画
  • 一些 UI 的动画,比如 “ 意见反馈”、 “ 语音输入” 这里面的动画
  • 主题设置,沉浸式状态栏(Android 5.0)
  • 切换主题
  • 可以滑动 item 和可以拖放 item 的 ListView(SlideAndDragListView)
  • Android 原生平台的 Markdown,支持 EditText 编辑实时预览 (RxMarkdown)
  • RxJava + RxAndroid(RxCategory/ RxPhotoNote/ RxSandBox/ RxFeedBack/ RxUser)
  • dex分包处理
  • Dex自动分包脚本
  • 使用 AOP 进行 Android 6.0 权限适配
  • NDK && AIDL

效果图:

这里写图片描述

https://github.com/yydcdut/PhotoNoter

好了,终于介绍完了,由于本文篇幅比较长,建议 「收藏」,欢迎大家评论点赞或者转发,如有更多想法欢迎在下方留言。

重要声明:本文中介绍的所有开源项目所有权仍归原开源作者所有,本文仅对原作者的开源项目进行介绍、整理说明,供参考、学习交流之用。

原文地址:https://www.cnblogs.com/angel88/p/8849666.html

时间: 2024-10-15 19:17:38

不可错过的几款GitHub开源项目的相关文章

【代码导读】Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)【二】

如果您意外进入该页面,或许从下述链接开始更容易理解: [代码导读]Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)[一] 1. 整体结构 在 wysihtml5 中,所有对象受 wysihtml5 命令空间保护,从其初始化定义看,整个代码架构一目了然: https://github.com/xing/wysihtml5/blob/master/src/wysihtml5.js 1 var wysihtml5 = { 2 version: "0.4.0pre&qu

AS中导入GitHub开源项目SlidingMenu总结,此方法有效,但是太耗时间。 「我用了半个多小时」

AS中导入GitHub开源项目SlidingMenu总结,我开始AS导入SlidingMenu的时候也百度了很多文章,写的都不是很详细,所以导入成功后,写了这篇文章,希望对想用AndroidStudio导入SlidingMenu的小伙伴有所启发. 先上最终效果图动画 1,下载SlidingMenu(https://github.com/jfeinstein10/SlidingMenu) 2.新建AS项目,把SlidingMenu-master中的library文件夹(我把这个文件夹重命名为sli

GitHub开源项目总结

GitHub开源项目总结,有需要的朋友可以参考下 GitHub开源项目android-styled-dialogs GitHub开源项目之changelog GitHub开源项目之AppRater GitHub开源项目之Android四次元(新浪微博客户端) GitHub开源项目之高仿"遇见" GitHub开源项目之Twitter客户端源码 GitHub开源项目之Jamendo音乐播放器 GitHub开源Android客户端 GitHub开源项目Android之Bootstrap Gi

iOS:开发常用GitHub开源项目(持续更新)

IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire cnoon Swift简洁网络请求库 SBJson stig Json解析引擎 JSONKit johnezang Json解析引擎 MJExtension CoderMJLee 字典转模型框架 KissXML robbiehanson XML解析 RNCryptor rnapier AES加密 F

如何参与一个GitHub开源项目

最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能说你开源了自己的项目,可以任别人自由下载. 那么该如何参与Github的开源项目呢?相信很多人都有这方面的疑问,网上也有一些参差不齐的教程教大家如何"Pull Request"

如何参与一个GitHub开源项目?

如何参与一个GitHub开源项目? 摘要:本文是Github官如何参与一个GitHub开源项目方给出的参与Github上开源项目的一些指导,对希望加入开源社区的开发者是一个不错的参考. 最近一年开源项目特别的热,很多技术大会或论坛都以开源项目作为主题进行探讨,可见这是一种趋势.而Github作为开源项目的著名托管地,可谓无人不知,越来越多的个人和公司纷纷加入到Github的大家族里来,为开源尽一份绵薄之力.对于个人来讲,你把自己的项目托管到Github上并不表示你参与了Github开源项目,只能

开源项目福利-github开源项目免费使用Azure PipeLine

微软收购Github后,很多人猜想微软可能会砍掉VSTS,然而事实VSTS并没有砍掉,关于Azure Devops的详细信息可以查看 这篇博客,如果想查看原文也可以从链接里提供的原始地址里查看. 今天要介绍的是做Azure devops的ci部分:Azure Pipeline. VSTS升级到Azure Devops之后对开源开发者带来的重大利好消息就是Github开源项目可以免费,无限时和并行运行10个CI/CD作业. 下面将简要介绍Azure PipeLine以及如何把Azure PipeL

使用 GitHub 开源项目申请 IntelliJ License

一.写在前面 这次要介绍的是通过使用 GitHub 上的开源项目来申请 IntelliJ Pycharm 的正版 License,只需在 GitHub 上准备一个维护超过3个月的开源项目,就能免费使用 Pycharm 一年了!这么好的方法,还不赶紧 get 一下? 二.为项目添加 License 在申请 License 之前,需要先给我们的 GitHub 开源项目添加 License,具体步骤如下: 1.新建文件 打开自己的 GitHub 个人主页,打开自己的开源项目,然后选择“Create n

Github开源项目单

以下涉及到的数据统计与 2019 年 5 月 1 日 12 点,数据来源:https://github.com/trending/java?since=monthly . 下面的内容从 Java 学习文档到最热门的框架再到热门的工具应有尽有,比如下面推荐到的开源项目 Hutool 就是近期比较热门的项目之一,它是 Java 工具包,能够帮助我们简化代码!我觉得下面这些项目对于学习 Java 的朋友还是很有帮助的! 1. JavaGuide Github 地址: https://github.co