Android主流UI开源库整理
wptr33 2025-05-23 20:38 27 浏览
前言
最近老大让我整理一份 Android主流UI开源库 的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。
标题隐含了两个层面的意思,一个是主流,另一个是UI。主流既通用,一些常规的按钮、Switch、进度条等控件都是通用控件,因此本文将其囊括,但一些很炫酷但不通用的控件除外。UI不仅包括控件,还包括效果、动画甚至是一些UI辅助类库等。
网上有不少对开源项目进行整理的文章,以下两个最为知名:
- https://github.com/Trinea/android-open-project 囊括了非常多的、各式各样的开源项目,包括但不限于UI、工具类库等。
 - https://github.com/wasabeef/awesome-android-ui 囊括了非常多的、各种类型的UI开源库。
 
本文的取材大部分来自这两篇文章,在此感谢文章作者的辛勤付出。更要感谢的是那些无私奉献代码的Opener。
主流UI分类
既然是整理,那先得有一个分类,分类如下:
- 按钮
 - Switch(开关)
 - 编辑框(类EditText)
 - 文本控件(类TextView)
 - 进度条(圈)等展示进度相关
 - 拖动条(类SeekBar)
 - RatingBar
 - 列表、网格、瀑布流控件
 - 对话框(Dialog、BottomSheet等)
 - 日历、时间选择
 - 分类筛选
 - 角标、徽章
 - 图表
 - 富文本编辑、代码高亮等
 - 图片展示(类ImageView)
 - 标签组控件(类FlowLayout)
 - App新手引导、高亮
 - 侧边栏索引、固定Header
 - 菜单(类Menu,但不包括侧滑菜单)
 - 通用下拉刷新、加载更多
 - 广告轮播、垂直公告
 - 滑动返回(类SwipeBack)
 - 指示器、Tab
 - 动画相关库
 - 侧滑菜单(类SlidingMenu)
 - 辅助类库
 
目前想到的通用控件种类就这么多,如有遗漏,欢迎指正哈。
主流UI开源库
以下是对上述分类的一一展开。我会列出每个分类下的热门开源项目,并适当的给出介绍。这些项目按照我所认为的通用性降序排列,排在越前面的说明通用性、实用性越高,但并不代表star就越多。有些项目有几千个star,效果看起来也很酷,但通用性很差,显得有些鸡肋,就靠后排列了,甚至介绍都免了。
按钮
- https://github.com/hoang8f/android-flat-button 很适合做扁平化、纯色的按钮,支持阴影。
 - https://github.com/Bearded-Hen/Android-Bootstrap BootStrap风格的按钮,做过前端的同学应该都知道。
 - https://github.com/dmytrodanylyk/circular-progress-button 可以显示进度的按钮,适用于点击按钮后执行一个长时间操作,此时可直接在按钮上显示进度。
 - https://github.com/dmytrodanylyk/android-process-button 可以显示进度的按钮。同上。
 
Switch(开关)
- https://github.com/kyleduo/SwitchButton 各式各样风格的Switch,总有一个适合你。
 - https://github.com/Nightonke/JellyToggleButton 带有弹性效果的Switch。
 
编辑框(类EditText)
- https://github.com/rengwuxian/MaterialEditText Material Design风格的EditText。
 - https://github.com/mabbas007/TagsEditText 以标签形式展示的EditText。
 - https://github.com/g707175425/CloudEditText 以标签形式展示的EditText。
 - https://github.com/vekexasia/android-edittext-validator 带错误校验和提示的EditText。
 - https://github.com/qinci/AndroidEdit 为EditText提供撤销、反撤销功能。
 
文本控件(类TextView)
- https://github.com/Manabu-GT/ExpandableTextView 可折叠的TextView,类似朋友圈查看全文。
 - https://github.com/grantland/android-autofittextview 自适应的TextView,在宽高固定的情况下,文字越多,字体越小。
 - https://github.com/rockerhieu/emojicon 支持emoji表情的TextView。
 - https://github.com/hanks-zyh/HTextView 支持很多文本特效的TextView,很赞。
 
进度条(圈)等展示进度相关
- https://github.com/DreaminginCodeZH/MaterialProgressBar Material Design风格的ProgressBar,支持多种效果。
 - https://github.com/hongyangAndroid/Android-ProgressBarWidthNumber 鸿洋大牛的作品,值得拥有。
 - https://github.com/daimajia/NumberProgressBar 代码家大牛的作品。
 - https://github.com/lopspower/CircularProgressBar 很实用的进度条,虽然只有一种效果。
 - https://github.com/dinuscxj/LoadingDrawable 各式各样创意、风格奇特的进度条。
 - https://github.com/akexorcist/Android-RoundCornerProgressBar 一个圆乎乎的、多彩的进度条。
 
拖动条(类SeekBar)
- https://github.com/AnderWeb/discreteSeekBar 拖拽时可显示气泡提示的SeekBar。
 - https://github.com/oli107/material-range-bar Material Design风格的、支持区间选取的SeekBar。
 
RatingBar
- https://github.com/DreaminginCodeZH/MaterialRatingBar
Material Design风格的RatingBar。 
列表、网格、瀑布流控件
- RecyclerView 这个就不用解释了,使用请参考Android RecyclerView 使用完全解析 体验艺术般的控件。
 - 对于列表、网格的拖拽排序、侧滑删除,推荐使用RecyclerView来做,可参考https://github.com/YoKeyword/ItemTouchHelperDemo。
 
对话框(Dialog、BottomSheet等)
- https://github.com/H07000223/FlycoDialog_Master 一套强大的Dialog集合,提供了类似BottomSheet的效果。
 - https://github.com/afollestad/material-dialogs 功能强大、支持各式各样风格的Dialog。
 - https://github.com/drakeet/MaterialDialog 一套Material Design风格的对话框。
 - https://github.com/orhanobut/dialogplus 实现对话框的另一种选择。
 
日历、时间选择
- https://github.com/philliphsu/BottomSheetPickers 非常不错的日历、时间选择控件。
 - https://github.com/vikramkakkar/SublimePicker 清爽、漂亮的日历。
 - https://github.com/wdullaer/MaterialDateTimePicker Material Design风格的日历、时间选择器。
 - https://github.com/borax12/MaterialDateRangePicker 效果和MaterialDateTimePicker几乎一样,不知道是不是抄的,提供了日历、时间区间的选择。
 - https://github.com/traex/CalendarListview 基于ListView,效果类似原生Android的日历。
 - https://github.com/square/android-times-square 来自square的日历选择器。
 
分类筛选
- https://github.com/dongjunkun/DropDownMenu
一个实用的多条件筛选菜单。 
角标、徽章
- https://github.com/HeZaiJin/SlantedTextView 用TextView实现的标签效果,值得一试。
 - https://github.com/stefanjauker/BadgeView 给特定的View添加角标效果。
 - https://github.com/leolin310148/ShortcutBadger 用来生成带有角标的图标。
 
图表
- https://github.com/xcltapestry/XCL-Charts 支持数十种图表,总有一个适合你。
 - https://github.com/lecho/hellocharts-android 功能强大、支持各式各样的图表控件。
 - https://github.com/PhilJay/MPAndroidChart 强大、易于使用的图表控件。
 - https://github.com/diogobernardino/WilliamChart
 
富文本编辑、代码高亮等
- https://github.com/wasabeef/richeditor-android 功能强大的富文本编辑器。
 - https://github.com/mthli/Knife 轻量级的富文本编辑器。
 - https://github.com/Thereisnospon/CodeView 强大的代码高亮控件,支持多种语言。
 
图片展示(类ImageView)
- https://github.com/chrisbanes/PhotoView 强大的、人尽皆知的图片浏览控件。
 - https://github.com/hdodenhof/CircleImageView 用来显示圆角图片的ImageView。
 - https://github.com/siyamed/android-shape-imageview 将图片按照自定义的形状显示。
 - https://github.com/amulyakhare/TextDrawable 以Drawable的形式显示字符,类似平时见到的“字符”头像。
 - https://github.com/chengdazhi/StyleImageView 能实现简单的图像处理的ImageView。
 
标签组控件(类FlowLayout)
- https://github.com/BelooS/ChipsLayoutManager 基于RecyclerView实现的标签控件。
 - https://github.com/hongyangAndroid/FlowLayout 鸿洋大牛的作品,支持单选、多选。
 
App新手引导、高亮
- https://github.com/amlcurran/ShowcaseView 老牌的引导高亮库。
 - https://github.com/KeepSafe/TapTargetView Material Design风格的高亮库。
 - https://github.com/hongyangAndroid/Highlight 一个引导高亮的库,来自鸿洋。
 - https://github.com/jaydenxiao2016/HighLightGuideView 又一个引导高亮库。
 - https://github.com/matrixxun/ProductTour 非常酷的引导页效果。
 - https://github.com/rahulrj/YahooNewsOnboarding
 - https://github.com/sacot41/SCViewPager
 - https://github.com/paolorotolo/AppIntro 一个比较炫酷的引导页框架。
 
侧边栏索引、固定Header
- https://github.com/beworker/pinned-section-listview 固定Header的ListView。
 - https://github.com/emilsjolander/StickyListHeaders 老牌的、固定Header的ListView。
 - https://github.com/timehop/sticky-headers-recyclerview 固定Header的RecyclerView。支持横向、纵向。
 
菜单(类Menu,但不包括侧滑菜单)
- https://github.com/futuresimple/android-floating-action-button 大名鼎鼎的fab。
 - https://github.com/linroid/FilterMenu 一个转盘式菜单。
 - https://github.com/ShamylZakariya/FlyoutMenus 一个很酷的弹出菜单。
 - https://github.com/ogaclejapan/ArcLayout 弧形菜单,支持多种效果。
 - https://github.com/oguzbilgener/CircularFloatingActionMenu 炫酷的弧形菜单,支持自定义动画。
 
通用下拉刷新、加载更多
- https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 廖祜秋大牛的下拉刷新框架,支持对任意View做下拉刷新,也仅限于做下拉刷新。
 - SwipeRefreshLayout 官方的、Material Design风格的下拉刷新框架。
 - https://github.com/chrisbanes/Android-PullToRefresh 老牌的下拉刷新框架,已废弃。
 - 那些只能对特定View做下拉刷新、上拉加载的非通用框架就不贴了。
 
广告轮播、垂直公告
- https://github.com/saiwu-bigkoo/Android-ConvenientBanner 基于ViewPager的广告轮播控件,支持循环滚动。
 - https://github.com/H07000223/FlycoBanner_Master 又一个广告轮播控件。
 - https://github.com/sfsheng0322/MarqueeView 基于ViewFlipper的垂直公告控件。
 
滑动返回(类SwipeBack)
- https://github.com/ikew0ng/SwipeBackLayout 老牌的滑动返回框架,需要结合透明主题,Activity不宜过多,否则卡顿严重。
 - https://github.com/YoKeyword/SwipeBackFragment 支持滑动返回的Fragment。
 - https://github.com/XBeats/and_swipeback 另一个滑动返回框架,无需设置透明主题。
 
指示器、Tab
- https://github.com/hackware1993/MagicIndicator 强大、可定制、易扩展的 ViewPager 指示器框架。
 - https://github.com/H07000223/FlycoTabLayout
 - https://github.com/ogaclejapan/SmartTabLayout
 - https://github.com/romandanylyk/PageIndicatorView 支持多种小圈小点的指示器。
 - https://github.com/ongakuer/CircleIndicator
 - TabLayout 总所周知的Tab框架,唯一的优势是来自官方。
 
动画相关库
- https://github.com/wasabeef/recyclerview-animators 一系列RecyclerView Item动画合集。
 - https://github.com/nhaarman/ListViewAnimations 一系列ListView Item动画合集。已废弃,推荐使用RecyclerView。
 - https://github.com/daimajia/AndroidViewAnimations 老牌的View动画合集。来自代码家
 - https://github.com/gabrielemariotti/RecyclerViewItemAnimators 又一个ReyclerView Item动画合集。
 - https://github.com/lgvalle/Material-Animations 一系列Material Design风格的动画合集。
 - https://github.com/jfeinstein10/JazzyViewPager 一系列的PageTransformer合集。
 - https://github.com/JakeWharton/NineOldAndroids 动画兼容库,用来在2.3及以下系统上使用属性动画,现已废弃。
 
侧滑菜单(类SlidingMenu)
- DrawerLayout 官方的侧滑菜单,功能强大。
 - https://github.com/jfeinstein10/SlidingMenu 老牌的侧滑菜单。
 - https://github.com/daimajia/AndroidSwipeLayout 一般用来实现View内部的侧滑。
 
辅助类库
- ItemTouchHelper 用来实现RecyclerView侧滑删除、拖拽排序的工具类。
 - https://github.com/rubensousa/RecyclerViewSnap 让RecyclerView具备类似ViewPager的效果。
 - ViewDragHelper 处理View拖拽的神器,使用参考Android ViewDragHelper完全解析 自定义ViewGroup神器。
 - Scroller 用于实现View的平滑滚动,使用参考Android Scroller完全解析,关于Scroller你所需知道的一切。
 
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
 - 
                        
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
 
- 继续学习Python中的while true/break语句
 - 
                        
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
 
- python continue和break的区别_python中break语句和continue语句的区别
 - 
                        
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
 
- 简单学Python——关键字6——break和continue
 - 
                        
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
 
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - 
                        
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
 
- Python 中 break 和 continue 傻傻分不清
 - 
                        
大家好啊,我是大田。...
 
- python中的流程控制语句:continue、break 和 return使用方法
 - 
                        
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
 
- L017:continue和break - 教程文案
 - 
                        
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
 
- 作为前端开发者,你都经历过怎样的面试?
 - 
                        
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
 
- 面试被问 const 是否不可变?这样回答才显功底
 - 
                        
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
 
- 2023金九银十必看前端面试题!2w字精品!
 - 
                        
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
 
- 前端面试总结_前端面试题整理
 - 
                        
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
 
- 由浅入深,66条JavaScript面试知识点(七)
 - 
                        
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
 
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
 - 
                        
添加图片注释,不超过140字(可选)...
 
- 今年最常见的前端面试题,你会做几道?
 - 
                        
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
 
- 一周热门
 
- 最近发表
 - 
- oracle数据导入导出_oracle数据导入导出工具
 - 继续学习Python中的while true/break语句
 - python continue和break的区别_python中break语句和continue语句的区别
 - 简单学Python——关键字6——break和continue
 - 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - Python 中 break 和 continue 傻傻分不清
 - python中的流程控制语句:continue、break 和 return使用方法
 - L017:continue和break - 教程文案
 - 作为前端开发者,你都经历过怎样的面试?
 - 面试被问 const 是否不可变?这样回答才显功底
 
 
- 标签列表
 - 
- git pull (33)
 - git fetch (35)
 - mysql insert (35)
 - mysql distinct (37)
 - concat_ws (36)
 - java continue (36)
 - jenkins官网 (37)
 - mysql 子查询 (37)
 - python元组 (33)
 - mybatis 分页 (35)
 - vba split (37)
 - redis watch (34)
 - python list sort (37)
 - nvarchar2 (34)
 - mysql not null (36)
 - hmset (35)
 - python telnet (35)
 - python readlines() 方法 (36)
 - munmap (35)
 - docker network create (35)
 - redis 集合 (37)
 - python sftp (37)
 - setpriority (34)
 - c语言 switch (34)
 - git commit (34)
 
 
