Github优秀Android开源项目,值得引用与学习(注意!里面有巨图! )

11,828 阅读27分钟
  • 内容添加(--根据trending(today)/java从上往下添加的,根据时间查看,都是github的项目,以及大佬们的点赞的GitHub项目 )
  • 刚进来的时候需要加载很多图片和gif图片, 所以想看图片效果需要耐心等待一下
  • 如果找项目了,最好根据关键字来查找,网页里 Ctrl + f 来快速查找,不如:Ctrl + f + recyclerView
  • 持续更新...


  • 2018-10-22 又懒一个月。。。

  • JJEvent 一个经过充分测试和线上验证的Android客户端自定义数据埋点SDK

  • 2018-9-26

  • JKeyboardPanelSwitch Android键盘面板冲突 布局闪动处理方案

  • BackgroundLibrary 通过标签直接生成shape,无需再写shape.xml

    android:layout_width="20dp"
    android:layout_height="20dp"
    android:layout_marginTop="5dp"
    app:pressed_drawable="@drawable/circle_like_pressed"
    app:unPressed_drawable="@drawable/circle_like_normal" />
    
  • 2018-9-17

  • VideoAudioDemo 抖音视频特效的实现

  • awesome-netease-cloudmusic 滑动置顶解决方案开源汇总,已经滑动冲突的解决方案总结

  • 2018-8-21

  • GraceViewPager 提供自定义GraceViewPager,可快速实现一屏显示多Page的功能

  • Android-Video-Trimmer 长短视频进行片段的裁剪选择,截图

  • RuleView 卷尺系列控件,包含:普通卷尺(如:体重)、金额尺、时间尺

  • Android-Animation-Set Android所有动画详细教程

  • AndroidAutoSize 今日头条屏幕适配方案终极版,一个极低成本的 Android 屏幕适配方案

  • 2018-07-30

  • Flutter-learning Flutter从配置安装到填坑指南详解,Flutter相关Demo解读,项目实例,Dart语法详解

  • Android-SpinKit 数据加载动画

  • Tumbleweed 将每个view进行单独动画操作,

  • XinFrameworkLib 使用lib的形式进行引用项目,整体结构:RXJAVA + Retrofit 2.0 + ObjectBox + MVP

  • glide-transformations glide的图片转换

  • RippleEffect 点击扩散,view扩散效果

  • 2018-7-9

  • 20+个很棒的Android开源项目

  • MTransition 自定义页面切换动画,转场动画

  • RollingText 数字滚动的textview,

  • 2018-7-2

  • ColorPickerView 选择颜色,颜色选择器, 选中图片中的某一点的颜色获取

  • WaveLineView 录音波浪view

  • Spotlight 新手导航

  • morph-bottom-navigation 底部导航 bottomNavigation 自定义凸起高度

  • RxEasyHttp 封装rxjava2 和 retrofit 链式调用

  • DragPointView 浮点view,类似qq浮点,可以拖动

  • SwipeDelMenuLayout 侧滑菜单

  • AndroidSwipeLayout 抽屉式 ,侧滑菜单

  • watermark-android 添加水印,文字水印

  • 2018-6-25

  • Biscuit 图片压缩算法 ,类似微信图片压缩

  • PlusMenu 仿微博、酷安点击加号揭露动画弹出菜单

  • GiftSurfaceView 直播间刷礼物动画

  • 2018-6-19

  • CommonDevKnowledge 史上最全的BAT大厂Android面试题汇集

  • SaveState 自动保存当前Activity或者fragment的onSaveInstanceState 和 onRestoreInstanceState 的相关操作

  • GlideToast 飞行的toast,动画效果

  • DZMeBookRead 小说阅读器Demo

  • epoxy RecyclerView 的集成

  • BubbleView 带箭头的Android气泡控件/容器类,popupWindow ,pop

  • StyleImageView 对ImageView,View Background,Drawable和Bitmap添加风格与设置亮度、对比度。

  • behavior-learn 仿美团商家详情界面实现内容复杂联动

  • TimeAgo 时间计算

  • dotsindicator viewpager indicator 指示器

  • ColdStart 冷启动,热启动,优化启动

  • talon-for-twitter-android 开源的Twitter,直接借鉴

  • SpiderMan 崩溃日志手机端显示

  • 2018-6-11

  • mpush 开源实时消息推送系统

  • BiometricPromptCompat 统一的指纹解锁

  • FancyView 闪屏页,开机页,

  • RippleLayout 实现点击水波纹的效果

  • ClassifyView 仿掌阅书架 将item进行拖拽层级跳转

  • awesome-design-patterns 设计模式,包括所有语言

  • walle Android Signature V2 Scheme签名下的新一代渠道包打包神器

  • XRichText 一个Android富文本类库,支持图文混排,支持编辑和预览,支持插入和删除图片。

  • FJDropDownMenu 下拉框, 多级列表实现,二级列表, 三级列表

  • divider recyclerView的通用分隔线ItemDecoration

  • 2018-6-4

  • RecyclerViewSnap recyclerView的对齐方式,SnapHelper的是使用

  • HighPerformanceFriendsCircle 实现高性能微信朋友圈效果

  • PlayerBase VideoView ,视频播放器

  • creative-viewpager 一个有头像的viewpager

  • StatusNavigationTransparent 屏幕适配之状态栏导航栏半透明、全透明(5.0以上去阴影),方法多样

  • CoolViewPager 一个炫酷的viewpager,动画很多

  • dialogflow-android-client ai AI sdk ,可以学习一下AI的项目

  • BaseDialog Android BaseDialog(开发必备)动画、加载进度、阴影、上下左右中 进入

  • flutter-musicplayer flutter demo库

  • XVideo 一个能自动进行压缩的小视频录制库

  • crash-course-computer-science-chinese 计算机科学速成课

  • SVG-Android SVG图片的开源库, 整体加载速度比png、iconfont和vector要快,主要是编译前预解码可以节省大量时间

  • PhotoEditor Photo Editor library ,图片编辑库,可写字,emoji,贴图等

  • TicktockMusic 一款采用 clean architecture、mvp、rxJava2、retrofit2、dagger2 等进行开发 material design 风格的 android 音乐播放器

  • SimpleCropView 一个简单的图片裁剪库

  • 2018-5-29

  • ParallaxImageView 在滚动的android ImageView上创建视差和任何其他转换效果

  • luckly_recyclerview RecyclerView实现上拉加载更多,下拉刷新,以及分组功能

  • AVLoadingIndicatorView 加载动画,已经停止维护。

  • fcharts 图标chart,有动画,响应快速

  • EasySettings 可以简单构建设置界面

  • EtsyBlur 模糊效果

  • RadarView 雷达扫描View

  • MNImageBrowser 一个图片浏览框架,类似微信图片浏览,手势向下滑动关闭,支持长按和单击监听,支持图片加载引擎自定义,支持横竖屏方向设置,简单方便 - 链接 -

  • 2018-5-14

  • Cosin Android loading view library 📊🍭,加载库

  • AndroidUT 单元测试,Unit Test

  • LayoutManagerGroup 自定义LayoutManager,含最美应用列表等recyclerView

  • mui 最接近原生APP体验的高性能框架,混合开发,HTML开发

  • PdfViewPager pdf的viewpager控件

  • SwipableLayout 向上或向下滑动关闭view , activity etc.

  • MeiWidgetView 自定义view控件集合库 弹跳小球 扩散圆 酷炫的路径 滚动视差 直播间送爱心 仿百度浏览器图片拖拽控件

  • bundletool 操纵Android应用程序包是一个工具。Google出品的

  • UETool 修改屏幕上的任意视图!!debug 、调试、screen

  • WebpConvertTool 将png 无损压缩成webp的小工具

  • StoriesProgressView 水平的progress可以分段展示

  • LoadingButtonAndroid substitute the ProgressDialog

  • MultipleStatusView 加载中视图、错误视图、空数据视图、网络异常视图、内容视图。

  • ArmsComponent MVPArms 官方快速组件化方案

  • FlutterOSC 基于Google Flutter的开源中国客户端,支持Android和iOS。

  • notify 通知, notification,

  • smartTable 自动生成表格的框架

  • StatusBarUtil 设置状态栏的样式工具

  • objectbox-java 快速的数据库

  • Android-skin-support 换肤框架,一行代码实现换肤

  • android-Ultra-Pull-To-Refresh 下拉刷新库,支持所有view

  • sceneform-android-sdk ARCore,用于增强现实的开发

  • 2018-5-7

  • CountdownView 倒计时控件

  • CountAnimationTextView textview的数字动画

  • Java-Interview 多数是一些 Java 基础知识、底层原理、算法详解。也有上层应用设计,其中不乏一些大厂面试真题

  • 2018-5-5

  • Gradle-Plugin-User-Guide-Chinese-Verision gradle中文翻译的学习

  • DialogFragmentDemos DialogFragment 的封装

  • SmartPopupWindow 一些特殊问题的解决方案

  • MultiView 九宫格,或者多图item

  • qqliu10u/QSkinLoader 一个支持多种场景的Android换肤框架

  • CircleIndicator 轻量级的viewpager指示器 ,viewpager indicator

  • AutoEx 帮助Android开发者,让项目在崩溃时从异常堆栈中,自动寻找Stack Overflow的回答

  • PLock 跨进程锁,支持读写锁分离 cross-process lock

  • PlumbTextView 垂直的textview,vertical textview

  • Flashbar 可自定义、提醒库、弹出框库、alerting

  • 2018-4-23 公司搬家,懒了一阵子【捂脸】

  • okdownload A Reliable, Flexible, Fast and Powerful download engine.

  • ScreenRecorder 录制屏幕。需要5.0+ 不需要root

  • AppOrder 改造TabLayout,修改指示线宽增加切Tab过渡动画

  • ExpandableCardView 可扩展的CardView

  • StepView A simple animated step view for Android 跳步的view

  • Skeleton 提前预加载或者预占位布局,不过好像设置预布局和adapter不一样

  • PopupBubble 可以在recyclerView的上面弹出新消息的按钮

  • AcgClub 一款纯粹的ACG聚合类App, 可以借鉴学习

    通过本项目,你可以了解到以下技术: 
    Material Design
    MVP
    组件化
    Kotlin
    RxJava2
    Retrofit
    Dagger2
    Realm
    Glide
    Arouter
    Jsoup
    Gradle配置
    混淆、多渠道包
    
  • LQRWeChat 高仿新版微信6.5.7,使用Rxjava+Retrofit+MVP+Glide 技术开发。相比上个版本,加入发送位置消息,红包消息等功能。值得借鉴

  • PlayerBase 将播放器的繁杂功能其业务组件化处理的框架方案,视频类型

  • WeYueReader Android开源项目-微Yue电子书阅读(MD设计)值得借鉴

    使用开源库
    
    Rx2网络封装 RxHttpUtils
    6.0权限库 RxPermissions
    Glide图片加载库 Glide
    下拉刷新库 SmartRefreshLayout
    RecyclerView简化框架 BaseRecyclerViewAdapterHelper
    MD风格Dialog material-dialogs
    TabLaout选择 NavigationTabStrip
    数据加载动画 Android-SpinKit
    展开折叠TextView ExpandTextView
    流式标签 FlowLayout
    数据库 greenDAO
    版本更新进度条 NumberProgressBar
    图片选择器 TakePhoto
    
    
  • MultiWaveHeader Android 炫酷的多重水波纹,炫酷登录

  • 2018-4-1

  • AlignTextView 字体对齐的textview

  • 2018-3-26

  • UltraViewPager 阿里巴巴提供的多特性的ViewPager

  • chinese-independent-developer 中国独立开发者项目列表 -- 分享大家都在做什么

  • ThinRPlugin 去掉R.class中不必要的内容,减小apk体积

  • RemoteControlView 一款万能遥控器的交互效果,支持自定义位置

  • RxDocs Rx和RxJava文档中文翻译项目

  • Rabbits 一个简单的路由库,专注于:页面间的导航跳转

  • Store android 异步数据加载 和 缓存

  • PreLoader android页面启动速度优化利器:在页面打开之前就预加载数据,页面预加载,启动预加载

  • 2018-3-12

  • RecylerViewMultiHeaderView 解决webView滑动冲突,支持与WebView,VideoView, HeaderView 嵌套使用

  • awesome-flutter Google新出的flutter,很棒的颤振的策划列表组件、框架、库和软件,里面介绍一些api等

  • direct-select-android 全屏的选择器,一个友好的选择器交互

  • BeesAndroid 为了理解Android系统的知识而组建的团队,前身是android-open-source-project-analysis

  • Java 使用java实现的算法库

  • kyrie 一个矢量动画的画板

  • TextPathView 一个textView的文字路径动画,一个把文字转化为路径动画然后展现出来的自定义控件

  • 2018-3-5

  • gradle-packer-plugin Android多渠道打包工具

  • UIUtil UIUtil for Android,歌词控件、打勾动画、对比、卫星菜单、点赞、滑动按钮、TAB指示器、联系人排序、拖曳排序、侧滑删除、阴影效果.、RecyclerView嵌套RecyclerView.、地图列表Poi/抽屉效果、进度设置...

  • HorizontalPage 一行代码让RecyclerView变身ViewPager

  • weixin-java-tools 可能是目前最好最全的微信Java开发工具包,支持包括微信支付、开放平台、小程序、企业号和公众号等的开发

  • CityPicker 城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等APP选择城市功能

  • WSLiveDemo 音视频,直播SDK,rtmp推流,录制视频,滤镜。百万用户,线上迭代半年,已经稳定

  • Long-Shadows android View的阴影,可以自定义阴影

  • 91porn 91Porn Android 客户端,突破游客每天观看10次视频的限制,还可以下载视频

  • TVRemoteIME 电视盒子的远程输入法应用,可跨屏远程输入、跨屏远程控制盒子、远程播放视频、文件管理

  • 2018-3-1

  • BottomBarLayout 简单小巧的地步导航

  • Interview-Notebook 面试或者学习---> 数据结构与算法、网络、操作系统、面向对象、数据库、java、编码实践、资料下载。。。

  • ShapeOfView 给任何android视图定制的形状shape

  • AndroidComponentizeLibs 多个维度对比一些有代表性的开源android组件化开发方案

  • VasDolly 腾讯出的多渠道打包工具

  • android-open-source-project-analysis 解读Android系统构架的详细分析

  • 2018-2-5

  • Auto.js 一个主要由无障碍服务实现的不需要Root权限的类似按键精灵的自动操作软件,可以实现自动点击、滑动、输入文字、打开应用等。

  • RtmpPublisher Rtmp端Android的视频直播流。server 、hls、rtmp三个端的代码都有

  • taitan 阿里巴巴提供的 模块化开发框架

  • Android-Goldfinger Android指纹验证库

  • richeditor-android 一个的富文本编辑器

  • 2018-1-29

  • monthweekmaterialcalendarview 纵享丝滑滑动切换的周月日历,可高度定制,仿小米日历

  • DragView2Fill ViewDragHelper结合RecyclerView的使用示例

  • material-dialogs 一个可以定制化的MD的dialog

  • 30-seconds-of-java8 30秒收集有用的Java8代码片段

    将数组分割成特定大小的小数组
    
    public static int[][] chunk(int[] numbers, int size) {
    return IntStream.iterate(0, i -> i + size)
            .limit((long) Math.ceil((double) numbers.length / size))
            .mapToObj(cur -> Arrays.copyOfRange(numbers, cur, cur + size > numbers.length ? numbers.length : cur + size))
            .toArray(int[][]::new);
    }
    
    此方法返回由给定类及其超类实现的所有接口。
    
    该方法通过连接两个Stream来工作。
    第一个Stream是通过创建带有接口的流和接口实现的所有接口来递归构建的。
    第二个Stream对超类也是如此。其结果是删除重复项后将两个Stream连接起来。
    
    public static List<Class<?>> getAllInterfaces(Class<?> cls) {
    return Stream.concat(
            Arrays.stream(cls.getInterfaces()).flatMap(intf ->
                    Stream.concat(Stream.of(intf), getAllInterfaces(intf).stream())),
            cls.getSuperclass() == null ? Stream.empty() : getAllInterfaces(cls.getSuperclass()).stream()
        ).distinct().collect(Collectors.toList());
    }
    等等一大堆的。。。
    
  • DateRangePicker 可以进行范围选择的事件选择器

  • NestingScrollDemo 嵌套滚动的多种实现方案Demo

  • Musicoco 【我的音乐-Musicoco】 音乐播放器,功能:通过耳机和通知栏快捷控制音乐播放、创建歌单、本地歌曲搜索、记忆播放、自动切换到夜间模式、定时停止播放、应用主题自定义以及播放界面风格选择等功能。

  • AndroidGodEye 对app进行全方位的实时的性能检测,debug,release版本都能

    • 链接

    • 系统分为三部分:

      Core 核心部分,提供所有模块

      Debug Monitor部分,提供Debug阶段开发者面板

      Toolbox 快速接入工具集,给开发者提供各种便捷接入的工具

      AndroidGodEye提供了多种监控模块,比如cpu、内存、卡顿、内存泄漏等等,并且提供了Debug阶段的Monitor看板实时展示这 些数据。而且提供了api供开发者在release阶段进行数据上报。

  • Eyepetizer-in-Kotlin 使用Kotlin撸一款Eyepetizer,学习Kotlin语言

  • new-pac 一个免费的翻墙插件

  • Paper 使用NoSQL的数据库,可以使用java/kotlin来进行快速查找

    save
        List<Person> contacts = ...
        Paper.book().write("contacts", contacts);
        
    read
        List<Person> = Paper.book().read("contacts");
        List<Person> = Paper.book().read("contacts", new ArrayList<>());
    
    delete
        Paper.book().delete("contacts");
        Paper.book().destroy();
    
  • WindowImageView 在recyclerView中的item类似于知乎之前的广告一样

    • 链接
    • 类似的还有这个博客的写法也不错,只需要更改一下imageView就行链接
  • Mango 一款全部用kotlin写的app应用,可以借鉴下

  • circle-video-record 简单的Android录制视频,可以设置成圆形界面录制

  • Intimate 提供了友好的 API 让 java反射的使用更加简单平滑

    • 链接
    • 其最核心的价值在于 Intimate 将在编译期对 apk 内部代码的调用进行反射优化,完全免除反射的效率问题,使得反射调用就像普通调用一样快捷且无任何代价。
  • 2018-1-22

  • HermesEventBus 一个基于EventBus的、能在 进程间 发送和接收event的库

    • 链接
    • 可以在app里进行进程通信,也可以在不同的app里进行通信
  • CheckVersionLib 版本检测升级(更新)库

  • JZAndroidChart Android 股票图表库

  • Captcha Android滑块验证码控件

  • YCVideoPlayer 视频播放器封装库案例,仿照优酷,爱奇艺视频播放器,可以添家视频观看权限,试看模式,类似优酷试看功能。基于ijkplayer...

    • 链接
    • 作者的GitHub项目中的介绍非常多!可以满足正常的需求。
  • PriseLayout 点赞头像列表,堆叠效果,叠加效果

  • SHSegmentControl 分段控件的布局

  • CameraView 一个使用相机操作的库,可以拍照以及录制视频

  • proxyee-down http下载工具,基于http代理,支持多连接分块下载

  • SVGAPlayer-Android 播放 After Effects / Animate CC (Flash) 动画

    parser = new SVGAParser(this);
    parser.parse(new URL("http://legox.yy.com/svga/svga-me/angel.svga"), new SVGAParser.ParseCompletion() {
    @Override
    public void onComplete(@NotNull SVGAVideoEntity videoItem) {
        SVGADrawable drawable = new SVGADrawable(videoItem);
        imageView.setImageDrawable(drawable);
        imageView.startAnimation();
    }
    @Override
    public void onError() {
    
    }
    });
    
    
  • 2018-1-15

  • UniversalToast 简洁优雅可点击的toast控件,仿手机百度9.0,无BadTokenException风险。

  • protools 作者说:历经开发周期两年,并且应用过千万级别项目的工具箱

    common 数据的处理 文件的处理 script 引擎的封装 系统方面查询的封装 日期对象的封装DatePlus 数值对象的封装Decimal

    http 统一发送对象为HttpSend 统一接收对象为HttpReceive 三个版本的 http 客户端(Jdk、Netty 和 OkHttp)

    mail 封装 JavaMail,并采用了队列等方法提高性能,并简化了发送过程

    security 封装了 jdk 和 bouncycastle 中几十种常见加密方式

    all 如果需要使用上述多个模块,可以导入all模块以使用所有模块

  • MarsDaemon 不死进程 嗯。。。稍微看看

  • AndroidSdkSourceAnalysis android sdk 源码解析——旨在帮助Android开发者更好的学习Android!

    • github.com/LittleFrien…
    • Seekbar源码解析、ArrayMap源码解析、ViewPager源码解析、、、等大部分的源码分析
  • ArcSeekBar 基于ArcSeekBar的扩展库

  • AndroidAsync 一个基于nio的异步请求,有http、websocket、socket.io等

    // url is the URL to download.
    AsyncHttpClient.getDefaultInstance().getString(url, new AsyncHttpClient.StringCallback() {
    // Callback is invoked with any exceptions/errors, and the result, if available.
    @Override
    public void onCompleted(Exception e, AsyncHttpResponse response, String result) {
        if (e != null) {
            e.printStackTrace();
            return;
        }
        System.out.println("I got a string: " + result);
    }
    

});

```
static void log(Object x) {
    System.out.println(x.toString());
}
static void foo() {
    log(null);
}
输出: warning: [NullAway] passing @Nullable parameter 'null' where @NonNull is required
    log(null);
        ^



基于MVC,可快速切换到MVP
1.提供XActivity、XFragment、SimpleRecAdapter、SimpleListAdapter等基类,可快速进行开发
2.完整封装XRecyclerView,可实现绝大部分需求
3.QTContentLayout、XRecyclerContentLayout实现loading、error、empty、4.content四种状态的自由切换
5.实现了Memory、Disk、SharedPreferences三种方式的缓存,可自由扩展
6.内置了EventBus,可自由切换到其他事件订阅库
7.内置Glide,可自由切换其他图片加载库
8.可输出漂亮的Log,支持Json、Xml、Throwable等,实现蝇量级
9.内置链式路由
0.内置常用工具类:package、random、file...,提供的都是非常常用的方法
0.内置加密工具类 XCodec,你想要的加密姿势都有
0.默认使用okhttputils作为api请求,可任性切换retrofit等其他库
0.引入三方库极少




-TransitionHelper 两步实现类似格瓦拉的转场动画,看起来好利害啊 - github.com/ImmortalZ/T… -



  • 内存泄漏和内存溢出的区别
  • blog.csdn.net/buutterfly/…
    • 内存溢出,就是说,你向系统申请了装10个橘子的篮子(内存)并拿到了,但你却用它来装10个西瓜,从而超出其最大能够容纳的范围,于是产生溢出;
    • 内存泄漏,就是说系统的篮子(内存)个数是有限的,而你申请了一个篮子,拿到之后没有归还(忘记还了或是丢了),于是造成一次内存泄漏。在你需要用篮子的时候,又去申请,如此反复,最终系统的篮子无法满足你的需求,最终会由内存泄漏造成内存溢出。
    • 应该是系统只有存放integer的空间,但你却申请了去存放long。这样就是内存溢出了!









  • Guava

    • Guava 是一个 Google 的基于java1.6的类库集合的扩展项目,包括 collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, 等等. 这些高质量的 API 可以使你的JAVa代码更加优雅,更加简洁
    • github.com/google/guav…
  • FiftyShadesOf

    • 一个View布局的占位符
      https://raw.githubusercontent.com/florent37/FiftyShadesOf/master/media/fadein.gif

  • Netflix近日发布了Hystrix,该库旨在通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包(request collapsing,即自动批处理,译者注),以及监控和配置等功能。
  • github.com/Netflix/Hys…