# drip
**Repository Path**: chen_kk/drip
## Basic Information
- **Project Name**: drip
- **Description**: 记录下安卓开发中的常用的库、view、widget以及一些知识总结
- **Primary Language**: Android
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2018-05-23
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# drip
安卓开发 点滴记录(欢迎star和watch)
Android开发工程师面试知识整理:
Android面试知识点整理(整理中)
安卓开发中的常用的库、view、widget以及一些知识总结
[View与Widget](#1) | [动画](#2) | [开发常用](#3) | [架构相关](#4) | [安卓Base封装](#5) | [直播技术](#6) | [实用插件](#7) | [Java深入](#8) |
View与Widget
### 带小红点的提示:BadgeView
- [BadgeView](https://github.com/stefanjauker/BadgeView)(stefanjauker的,改颜色需要在BadgeView源码里面改)
- [android-viewbadger](https://github.com/jgilfelt/android-viewbadger)(可以设置提示为数字或者文字,以及背景颜色)
### 标签tagview
- [TAGView](https://github.com/Jude95/TAGView)(可以设置背景图片的形状和颜色,可以同时显示图片和文字)
- [android-tagview](https://github.com/kaedea/android-tagview)(Android-Cloud-TagView-Plus,除了能设置标签的样式外,还能监听标签的点击和删除事件)
- [TagCloudView](https://github.com/kingideayou/TagCloudView)(支持 SingleLine 模式的标签云效果)
- [TagView](https://github.com/Cutta/TagView)(纯文字彩色标签,可以监听标签被选择和删除时的状态,可以单击删除)
- [android-tagview](https://github.com/VEINHORN/android-tagview)(含有箭头的彩色标签)
- [AndroidTagView](https://github.com/whilu/AndroidTagView)(可以添加和删除tag,监听单击和长按)
- [EasyTagDragView](https://github.com/wenhuaijun/EasyTagDragView)(仿网易新闻app下拉标签选择菜单,长按拖动排序,点击增删标签控件)
### 圆形图片:CircleImageView
- [CircleImageView](https://github.com/hdodenhof/CircleImageView)(hdodenhof大神的,单纯的圆形ImageView,可以设置边框,目前还有一些限制)
- [RoundedImageView](https://github.com/vinc3m1/RoundedImageView)(椭圆或者圆角矩形皆可,可以设置边框)
- [CircleImageView](https://github.com/zuoweitan/CircleImageView)(使用clippath实现的CircleImageView,没有Bitmap,没有锯齿,可以设置其他的ScaleType)
### 流程指示器StepView
- [StepView](https://github.com/baoyachi/StepView)(横向和竖直方向的流程显示,可以用于订单或者物流等需要不同状态的场景)
- [Android-StepsView](https://github.com/anton46/Android-StepsView)(单纯的横向流程,可以设置颜色)
### 可以展开的TextView:ExpandableTextView
- [ExpandableTextView](https://github.com/Chen-Sir/ExpandableTextView)(可以展开和收起的TextView,用于多文字显示)
- [ExpandableTextView](https://github.com/Manabu-GT/ExpandableTextView)(需要包含TextView和ImageView,感觉没有上面的方便,不过适合自定义单击的图片及其位置)
### ToggleButton
- [TriStateToggleButton](https://github.com/BeppiMenozzi/TriStateToggleButton)(具有三种状态的切换开关,也可以只两种状态,包含动画属性)
- [RMSwitch](https://github.com/RiccardoMoro/RMSwitch)(Android 两状态或者三状态Switch 按钮,可以设置按钮的图片,多样式)
- [Android-SwitchIcon](https://github.com/zagum/Android-SwitchIcon)(在自身图标上通过颜色的改变来显示关闭和开启的两种状态的switch控件)
### 日历
- [LightCalendarView](https://github.com/recruit-mp/LightCalendarView)(简洁风格的日历 View)
- [OneCalendarView](https://github.com/MorochoRochaDarwin/OneCalendarView)(该日历组件还是相当新颖的)
- [material-calendarview](https://github.com/prolificinteractive/material-calendarview)(日历组件,感觉UI和效果基本上和一些手机上原装的日历差不多)
### RecyclerView、ListView、GridView的封装
- [EasyRecyclerView](https://github.com/Jude95/EasyRecyclerView)(包含上拉加载和下拉刷新、EmptyView、showProgress、showError)
- [侧滑RecyclerView](http://www.jianshu.com/p/af9f940d8d1c)(含侧滑的RecyclerView)
- [excelPanel](https://github.com/zhouchaoyuan/excelPanel)(二维的RecyclerView,像excel表格,自带监听)
### dialog
- [material-dialogs](https://github.com/afollestad/material-dialogs)(对dialog很好的封装,不过使用教程比较多,接入略微复杂点)
- [FlycoDialog_Master](https://github.com/H07000223/FlycoDialog_Master)(有material design的,有多item的,也有ActionSheetDialog从屏幕底端弹出的那种,风格清晰,自带弹出与关闭动画,不过依赖有点多)
- [NiftyDialogEffects](https://github.com/sd6352051/NiftyDialogEffects)(弹出的时候有各种动画)
### 漂亮的弧形顶部布局效果
- [ArcLayout](https://github.com/florent37/ArcLayout)(漂亮的弧形顶部布局效果)
### MusicPlayerView
- [Material_MusicPlayerView](https://github.com/amineghabi/Material_MusicPlayerView)(material design的音乐播放器)
***
动画
### 加载进度条LoadingView
- [AVLoadingIndicatorView](https://github.com/81813780/AVLoadingIndicatorView)(各式各样的ProgressBar)
- [NVActivityIndicatorView](https://github.com/ninjaprox/NVActivityIndicatorView)(各式各样的ProgressBar)
- [NumberProgressBar](https://github.com/daimajia/NumberProgressBar)(daimajia大神的带数字的横向ProgressBar)
### 动画
- [recyclerview-animators](https://github.com/wasabeef/recyclerview-animators)(RecyclerView相关动画)
- [AndroidViewAnimations](https://github.com/daimajia/AndroidViewAnimations)(daimajia大神的,各种动画,nice)
- [AndroidSwipeLayout](https://github.com/daimajia/AndroidSwipeLayout)(listview和RecyclerView的滑动删除、收藏)
- [lottie-android](https://github.com/airbnb/lottie-android)(该库可以通过Adobe After Effects做出动画效果然后导出为json文件,利用LottieAnimationView可以在安卓中加载为动画效果,不受限于安卓平台,动画效果可以很多)
***
开发常用
### 导航栏:
- [FlycoTabLayout](https://github.com/H07000223/FlycoTabLayout)(顶端和底部的导航栏,nice!自带indicator,可以设置数字或者小红点的消息提示,tab样式丰富-圆角矩形)
- [BottomNavigationView](https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.html)(官方design25.0.0之后才有的,compile 'com.android.support:design:25.0.0',不过Tab样式好像比较少)
- [BottomNavigation](https://github.com/Ashok-Varma/BottomNavigation)(3-5个Item,可以设置Badges圆形消息提示和提示的背景颜色,包含隐藏动画)
- [PagerBottomTabStrip](https://github.com/tyzlmjj/PagerBottomTabStrip)(可以设置Badge圆形消息提示和提示的背景颜色)
- 除了上述直接使用的库之外,还可以自己实现
1.TabLayout+ViewPager(5.0之后推出的)
2.RadioGroup+ViewPager+Fragment
3.FragmentTabHost+Fragment
4.利用TextView+ImageView实现(不推荐,太麻烦了)
### 抽屉
- [SlidingRootNav](https://github.com/yarolegovich/SlidingRootNav)(类似以前QQ的侧边抽屉,会改变大小的那种)
- [ArcNavigationView](https://github.com/rom4ek/ArcNavigationView)(一个有弯曲边缘效果的NavigationView控件,不过我个人觉得可能有点反人类,大家见仁见智吧)
### ViewPager相关
- [PageIndicatorView](https://github.com/romandanylyk/PageIndicatorView)(An page indicator for Android ViewPager)
- [PagerSlidingTabStrip](https://github.com/jpardogo/PagerSlidingTabStrip)(Material Design风格,感觉和TabLayout实现的差不多)
- [ViewPagerIndicator](https://github.com/JakeWharton/ViewPagerIndicator)(很久的了,我觉得官方新出的一些都比这个好)
### CoordinatorTabLayout
- [CoordinatorTabLayout](https://github.com/hugeterry/CoordinatorTabLayout)(可以快速实现TabLayout和CoordinatorLayout的组合效果)
### 滑动关闭页面
- [SwipeBackLayout](https://github.com/ikew0ng/SwipeBackLayout)(从上下左右四个方向滑动关闭Activity,可以设置首页不滑动 setSwipeBackEnable(false),不过activity需要设置透明主题)
- [SlideBackLayout](http://blog.csdn.net/meijian531161724/article/details/50763931)(不需要继承什么,只是初始化并bind)
- [SwipeBackHelper](https://github.com/Jude95/SwipeBackHelper)(Jude95的,在activity的生命周期中调用相应的方法,好像对图层渲染的压力小点,有机会研究下)
- [SwipeBack](https://github.com/liuguangqiang/SwipeBack)(liuguangqiang的,四个方向滑动关闭,不过xml根目录好像必须要是SwipeBackLayout )
- [SwipeBack](https://github.com/sockeqwe/SwipeBack)(需要和ViewPager的滑动区分下)
- [SwipeBackFragment](https://github.com/YoKeyword/SwipeBackFragment)(滑动Fragment&Activity边缘可以返回)
### 多Fragment使用
- [Fragmentation](https://github.com/YoKeyword/Fragmentation)(为"单Activity + 多Fragment","多模块Activity + 多Fragment"架构而生,大大简化使用过程,轻松解决各种复杂嵌套等问题,修复了官方Fragment库中存在的一些BUG)
### 图片选择器
- [MediaPickerInstagram](https://github.com/NodensN/MediaPickerInstagram)(Material风格的类似 Instagram 的图片选择器,包含图片选择、拍照、视频拍摄)
- [AwesomeImagePicker](https://github.com/myinnos/AwesomeImagePicker)(Material风格的图片选择器,包括图片和gif,能够多选)
- [Album](https://github.com/yanzhenjie/Album)(图片选择器,在底部可以选择文件夹)
- [boxing](https://github.com/Bilibili/boxing)(boxing是B站出品的一个多媒体选择器库,可以选择一张或者多张图片,提供预览和裁剪功能。同样支持gif图,选择视频和图像压缩功能。)
### 加载(过程、失败)
- [stateLayout](https://github.com/fingdo/stateLayout)(加载的替换layout,可以替换layout中的内容,类似于EmptyView之类的)
### 密码
- [LolliPin](https://github.com/OrangeGangsters/LolliPin)(为应用程序提供pin密码,包含数字和指纹识别)
### 管理库
- [spruce-android](https://github.com/willowtreeapps/spruce-android)(动画管理库)
### app shortcuts
- [shortbread](https://github.com/MatthiasRobbers/shortbread)(自Android 7.0后,用户可以长按桌面图标弹出快捷菜单,该库可以帮助开发者快速开发app shortcuts)
### 著名开源库
- [vlayout](https://github.com/alibaba/vlayout)(阿里巴巴开源的项目——VirtualLayout是一个针对RecyclerView的LayoutManager扩展, 主要提供一整套布局方案和布局间的组件复用的问题。说白了就是对复杂布局的解决方案)
- [atlas](http://atlas.taobao.org/index.html)(带你重返App开发的田园时代——其实就是为开发者解决繁杂的业务关系和一些迭代与集成问题,总之,挺厉害的)
***
架构相关
### 应用MVP模式的实用项目
- [TLint](https://github.com/gzsll/TLint)(虎扑体育 基于Dagger2+RxJava+Retrofit开发,采用MVP模式)
- [Hot](https://github.com/zj-wukewei/Hot)(MVP+Rxjava+Retrofit,是个微信头条的分享)
- [LookLook](https://github.com/xinghongfei/LookLook)(新闻阅读app)
- [Beam](https://github.com/Jude95/Beam)(MVP开发框架)
- [TheMVP](https://github.com/kymjs/TheMVP)(kymjs的一个新型MVP设计)
- [Espresso](https://github.com/TonnyL/Espresso)(基于MVP架构和Material Design设计风格,采用RxJava2, Retrofit2, Realm and ZXing开发的快递查询App)
***
安卓Base封装
### BaseProject封装
- [BaseProject](https://github.com/zzkong/BaseProject)(基本项目框架,项目采用MVP+RxJAVA+Okhttp+Retrofit+dagger2实现。项目中带有最基本的BaseActivity,BaseFragment封装)
- [KJFrameForAndroid](https://github.com/kymjs/KJFrameForAndroid)(kymjs的一个开发框架,包含Bitmap与Http操作)
### BaseAdapter封装(listview、RecyclerView、GridView)
- [AdapterDelegates](https://github.com/sockeqwe/AdapterDelegates)(好复杂,以后再看)
- [baseAdapter](https://github.com/hongyangAndroid/baseAdapter)(Android 万能的Adapter for ListView,RecyclerView,GridView等,支持多种Item类型的情况)
***
直播技术
### 直播技术
- [SmarterStreaming](https://github.com/daniulive/SmarterStreaming)(跨平台视频采集、直播SDK(支持私有协议和RTMP推流,如Windows推流/android推流/iOS推流/Windows播放/android播放/iOS播放),公网毫秒级延迟,也许是国内最靠谱的视频直播推流、播放SDK之一,助您轻松实现类似于花椒、映客、斗鱼手机直播推送与播放)
- [PLDroidPlayer](https://github.com/pili-engineering/PLDroidPlayer)( Android 平台的音视频播放器 SDK,可高度定制化和二次开发)
- [ijkplayer](https://github.com/Bilibili/ijkplayer)(Bilibili的Android/iOS video player )
- [pili-ijkplayer](https://github.com/pili-engineering/pili-ijkplayer)(pili-engineering的Android/iOS video player)
- [PreviewSeekBar](https://github.com/rubensousa/PreviewSeekBar)(看视频时,拖动进度条可以预览当前帧的画面)
### 弹幕
- [Barrage](https://github.com/OctavianLee/Barrage)(一个开源的b站直播间弹幕助手,主播可以获取直播间内弹幕信息且可以进行发送弹幕功能)
- [DanmakuFlameMaster](https://github.com/Bilibili/DanmakuFlameMaster)(Bilibili的Android开源弹幕引擎·烈焰弹幕使)
- [BarrageRenderer](https://github.com/unash/BarrageRenderer)(一个 iOS 上的开源弹幕渲染库)
- [HJDanmakuDemo](https://github.com/panghaijiao/HJDanmakuDemo)(iOS系统上弹幕源码实现)
***
实用插件
### Android Studio插件
- [JRebel](https://zeroturnaround.com/software/jrebel-for-android/features/)(Android 高效开发调试神器 JRebel,效率比Instant Run高且稳定)
- [here-be-dragons](https://github.com/anupcowkur/here-be-dragons)(用注解把那些恶心的,或者有 Hack 功能的代码标注出来,每次调用时 IDE 都会提醒这个函数调用有潜在风险)
### 安全相关
- [condom](https://github.com/oasisfeng/condom)(一个超轻超薄的Android工具库,阻止三方SDK中常见的严重影响用户体验的『链式唤醒』行为。(对应用自身的功能无影响))
### 其它
- [AdaptiveTableLayout ](https://github.com/Cleveroad/AdaptiveTableLayout)(可以对CSV 文件加载和预览,行和列都可以拖拽)
- [LogUtils](http://www.jianshu.com/p/b806d014162c)(日志工具类)
- [AppMethodOrder](https://github.com/zjw-swun/AppMethodOrder)(能了解所有函数调用顺序的Android库,很牛逼的说)
- [awesome-ocr](https://github.com/wanghaisheng/awesome-ocr)(文字识别)
- [BlockCanaryEx](https://github.com/seiginonakama/BlockCanaryEx)(记录线程和每个线程函数执行时间,从而找到影响效率的地方)
***
java深入
### java深入
- [探索 Java 隐藏的开销](https://realm.io/cn/news/360andev-jake-wharton-java-hidden-costs-android/)
- [java反射](http://www.cnblogs.com/zhaoyanjun/p/6074887.html)
- [开源 Java 性能监控 (APM) 方案](https://github.com/naver/pinpoint)
***
Android深入
### Android深入
- [深入Android渲染机制](http://blog.csdn.net/ccj659/article/details/53219288)
- [java反射](http://www.cnblogs.com/zhaoyanjun/p/6074887.html)