==>来自于微信公众号==鸿洋。大家可以关注一波大神之作。

后台经常有人问我能不能推荐几个完整项目用于学习。借着周末的机会,给大家推荐几个,项目我基本都在本地运行过,并且会在文章末尾提供每个项目的apk用于大家下载预览,如果你觉得不错可以再学习源码,这样避免了大家还需要导入、运行后选择,可以节省一定大家的时间。

此外,由于完整项目类很难在github上搜索,特意在wanandroid.com上开设了一个分类用于存储完整的开源项目方便大家查找(最近工作太忙,wanandroid开发进度比较慢~~)。

http://www.wanandroid.com/article/list/0?cid=254

下面开始推荐的项目吧~

1diycode客户端

Diycode 社区客户端,相信很多人应该都知道这个社区,偶尔会有一些质量很高文章、讨论等。

他们不但开源了客户端,而且提供了一套SDK,如果你想要自己动手开发一个练手项目,是个不错的选择。

此外,为了便于理解项目源码,他们在ReadMe中提供了几篇技术文章:

  • 01 - 整体架构

  • 02 - 缓存 WebView 中的图片

  • 03 - 点击网页图片查看大图

  • 04 - API 的封装哲学

  • 05 - 使用抽象类节省 1000 行代码

这些文章不仅能够方便大家理解,也可以用来积累知识~

https://github.com/GcsSloop/diycode

2咕咚翻译app

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

如果你经常在手机上阅读文章,偶尔遇到一些英文单词需要翻译,你只要在当前页面“划词”即可实现翻译,该app非常实用,当然里面也包含一些技术值得你花时间去学习:

1、全程使用 Dagger2 对项目进行类依赖管理

2、项目使用标准的 MVP 架构,关于 MVP 的一篇博客

3、实现对粘贴板的监听以及访问

4、无需权限显示悬浮窗(6.0悬浮窗权限适配)

5、使用 RxJava 探索函数式编程

6、使用 Retrofit2 进行网络请求

7、开机自启动

8、Android 6.0 自定义文本操作栏

https://github.com/maoruibin/TranslateApp

3开眼视频学习项目

做的非常精致,界面非常优雅,功能也处于相对完毕的状态。最重要的是是使用kotlin编写的,如果你正在或者想要学习kotlin,通过项目去学习要比通过文字来学习快得多。

同时在Readme页面,作者也对kotlin的特性有一些初步的介绍。如果你现在时间较为充足,不妨学习下kotlin~

程序仅供学习交流, 不可用于任何商业用途

https://github.com/LRH1993/Eyepetizer-in-Kotlin

4仿今日头条学习项目

你可以认为这是一个遵循Material Design风格的第三方的头条客户端,功能已经相当完备,, 聚合了新闻/段子/图片/视频/头条号内容, 没有广告, 仅仅只有存粹的阅读, 不断完善中, 采用 MVP + RxJava + Retrofit 架构的项目~

包含技术:

  • 基本遵循 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 优雅实现搜索请求

  • 使用 RxLifecycle 绑定 RxJava 生命周期

  • 使用 Travis Cl 持续集成

更加重要的是,作者双11还在更新代码,是个相当不错的学习项目~~

程序仅供学习交流, 不可用于任何商业用途

https://github.com/iMeiji/Toutiao

5斗鱼学习项目

高仿程度令人咋舌~光是UI和一些特效都够学习相当一段时间了。

涉及到的一些第三方如下:

  • 弹幕三方库:DanMu

  • 轮播图:BGABanner

  • 刷新加载控件XRefreshView

  • 导航栏控件 FlyCoTabLayout

  • 弹幕与房间加密参考项目:斗鱼项目

  • 直播视频播放器 :vitamio播放器 (备注:直播视频格式:HLS,RTMP)

源码:https://github.com/TeamCodeForGit/DouYu

想必会有朋友会遇到导入不成功的问题,如遇问题尽可能将gradle相关配置修改为自己常用的版本,然后根据提示解决。

推荐阅读:

我的 Android 面试故事 | 13家面试记录

不要错过 | 给大家推荐一些提升技能的好书

推荐Android几个优质的完整项目学习的更多相关文章

  1. 【强烈推荐】适合Flutter初学者的完整项目

    简介 Flutter Fly是什么?Flutter Fly是一款开源的Flutter 项目,非常适合初学者进行学习.App内集成了160+Flutter基础控件的详细介绍及用法,内容来源于:http: ...

  2. Android通用框架设计与完整电商APP开发系列文章

    作者|傅猿猿 责编|Javen205 有福利 有福利 有福利 鸣谢 感谢@傅猿猿 邀请写此系列文章 Android通用框架设计与完整电商APP开发 课程介绍 [导学视频] [课程详细介绍] 以下是部分 ...

  3. Android SDK上手指南:示例项目

    Android SDK上手指南:示例项目 2013-12-26 15:40 核子可乐译 51CTO 字号:T | T Android SDK示例项目中的应用能够执行种种功能,例如各类用户界面元素.数据 ...

  4. android开源项目学习

    FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...

  5. Android Studio之同一窗口打开项目

    Android Studio默认新打开的项目都是重新打开一个窗口,和原项目窗口同时存在,如果打开多个项目,则有很多窗口同时打开,怎么根据需要决定自己以何种方式打开呢? 1.设置打开新项目的方式 第一项 ...

  6. GankApp 侧滑和title修改颜色的完整项目app

    GankApp 侧滑和title修改颜色的完整项目app GankApp 侧滑和title修改颜色的完整项目app,本项目主要由侧滑框架和4.4以及以上的头部title颜色调整和, 首页viewpag ...

  7. Android Studio 快速实现上传项目到Github(详细步骤)

    前言: 本文主要讲解如何将Android Studio项目上传至GitHub,在此之前,先介绍几个概念. Android Studio:是谷歌推出一个Android集成开发工具,基于IntelliJ ...

  8. ETL项目1:大数据采集,清洗,处理:使用MapReduce进行离线数据分析完整项目

    ETL项目1:大数据采集,清洗,处理:使用MapReduce进行离线数据分析完整项目 思路分析: 1.1 log日志生成 用curl模拟请求,nginx反向代理80端口来生成日志. #! /bin/b ...

  9. 推荐一款优秀的WPF开源项目

    项目介绍 此项目应用了Prism MVVM框架,项目展示数据来源于其他服务程序,使用的WebAPI通信,如果要正常运行此程序,需要您自己做一个WebAPI程序,由API接口提供数据驱动,其实直接查看代 ...

随机推荐

  1. ssm(Spring、Springmvc、Mybatis)实战之淘淘商城-第十四天(非原创)

    文章大纲 一.淘淘商城总体架构介绍二.淘淘商城重要技术点总结三.项目常见面试题四.项目学习(all)资源下载五.参考文章 一.淘淘商城总体架构介绍 1. 功能架构   2. 技术选型 (1)Sprin ...

  2. ngnix入门配置

    文件1.首先到ngnix下载页面下载你操作系统对应的ngnix压缩包    http://nginx.org/en/download.html 博主我是window10操作系统  上面是我解压之后放的 ...

  3. 不该被忽视的CoreJava细节(四)

    令人纳闷的数组初始化细节 这个细节问题我很久以前就想深入研究一下,但是一直没有能够抽出时间,借这系列文章的东风,尽量解决掉这个"心头病". 下面以一维int数组为例,对数组初始化方 ...

  4. pysnmp程序

    功能 访问远程交换机snmp数据,写入本地influxdb数据库 #!/usr/bin/env python # -*- encoding: utf-8 -*- import os, yaml, ti ...

  5. cms系统-帖子页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. C#环形缓冲区(队列)完全实现

    公司项目中经常设计到串口通信,TCP通信,而且大多都是实时的大数据的传输,然后大家都知道协议通讯肯定涉及到什么,封包.拆包.粘包.校验--什么鬼的概念一大堆,说简单点儿就是要一个高效率可复用的缓存区. ...

  7. Sentinel spring-cloud-gateway adapter(1.6)异常错误之@EnableCircuitBreaker

    sentinal 大坑 使用gateway adaper包出现@EnableCircuitBreaker did you forget include starter的异常 这时候千万不要学我引入cl ...

  8. Redis安装配置及在Python上的应用

    最近在使用Kazoo(开源电话系统) API时,一次请求的处理需要调用几次API,只为了得到一个name和id的对应关系,耗时非常大,开始想使用一种简单的实现,直接将对应关系保存到静态类的静态变量中, ...

  9. Liunx开发(Extjs4.1+desktop+SSH2超强视频教程实践)(2)

    然后装eclipse: 为啥默认是搜狗导航: java还没装呢: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo ...

  10. 【BZOJ2754】[SCOI2012] 喵星球上的点名(后缀数组+莫队)

    点此看题面 大致题意: 每个人的名字由姓和名构成,如果某次点名点到的字符串是某人姓或名的一个子串,则这个人就被点到了.求每次点名被点到的人的个数及每个人被点到的总次数. 后缀数组+莫队 这道题做法很多 ...