Android mainstream UI open source library finishing
The title implies two levels of meaning, one is mainstream and the other is UI. The mainstream is universal, and some conventional buttons, switches, progress bars and other controls are common controls, so this article includes them, except for some cool but not universal controls. UI includes not only controls, but also effects, animations and even some UI auxiliary class libraries.
There are many articles on the Internet that sort out open source projects, the following two are the most well-known:
-
https://github.com/Trinea/android-open-project
includes a lot of various open source projects, including but not limited to UI, tool libraries, etc. -
https://github.com/wasabeef/awesome-android-ui
includes a lot of various types of UI open source libraries.
Most of the materials for this article come from these two articles, and I would like to thank the authors of the articles for their hard work. I would like to thank those Openers who have selflessly contributed code.
Mainstream UI classification
Since it is sorting, there must first be a classification, which is as follows:
-
button
-
Switch
-
Edit Box (class EditText)
-
Text control (class TextView)
-
Progress bar (circle) and other display progress related
-
Drag bar (class SeekBar)
-
RatingBar
-
List, grid, waterfall controls
-
Dialog (Dialog, BottomSheet, etc.)
-
calendar, time selection
-
Category screening
-
Corner mark, badge
-
chart
-
Rich text editing, code highlighting, etc.
-
Image display (class ImageView)
-
Tab group control (class FlowLayout)
-
App novice guide, highlight
-
Sidebar index, fixed Header
-
Menu (like Menu, but not including side-sliding menu)
-
Universal pull down to refresh, load more
-
Ad rotation, vertical announcements
-
Swipe back (class SwipeBack)
-
Indicator, Tab
-
Animation related library
-
Side menu (class SlidingMenu)
-
Auxiliary class library
There are only so many types of general controls that come to mind at present. If there are any omissions, please correct me.
Mainstream UI open source library
以下是对上述分类的一一展开。我会列出每个分类下的热门开源项目,并适当的给出介绍。这些项目按照我所认为的通用性降序排列,排在越前面的说明通用性、实用性越高,但并不代表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/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/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/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/KeepSafe/TapTargetView
Material Design风格的高亮库。 -
https://github.com/hongyangAndroid/Highlight
一个引导高亮的库,来自鸿洋。 -
https://github.com/jaydenxiao2016/HighLightGuideView
又一个引导高亮库。 -
https://github.com/matrixxun/ProductTour
非常酷的引导页效果。 -
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/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/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/romandanylyk/PageIndicatorView
支持多种小圈小点的指示器。 -
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/daimajia/AndroidSwipeLayout
一般用来实现View内部的侧滑。
辅助类库
-
ItemTouchHelper
用来实现RecyclerView侧滑删除、拖拽排序的工具类。 -
https://github.com/rubensousa/RecyclerViewSnap
让RecyclerView具备类似ViewPager的效果。 -
ViewDragHelper
处理View拖拽的神器,使用参考Android ViewDragHelper完全解析 自定义ViewGroup神器。 -
Scroller
用于实现View的平滑滚动,使用参考Android Scroller完全解析,关于Scroller你所需知道的一切。