我的Android成长之路(14)----主流UI开源库整理

Android主流UI开源库整理


标题隐含了两个层面的意思,一个是主流,另一个是UI。主流既通用,一些常规的按钮、Switch、进度条等控件都是通用控件,因此本文将其囊括,但一些很炫酷但不通用的控件除外。UI不仅包括控件,还包括效果、动画甚至是一些UI辅助类库等。

网上有不少对开源项目进行整理的文章,以下两个最为知名:

  1. https://github.com/Trinea/android-open-project
    囊括了非常多的、各式各样的开源项目,包括但不限于UI、工具类库等。

  2. https://github.com/wasabeef/awesome-android-ui
    囊括了非常多的、各种类型的UI开源库。

本文的取材大部分来自这两篇文章,在此感谢文章作者的辛勤付出。更要感谢的是那些无私奉献代码的Opener。

主流UI分类


既然是整理,那先得有一个分类,分类如下:

  1. 按钮

  2. Switch(开关)

  3. 编辑框(类EditText)

  4. 文本控件(类TextView)

  5. 进度条(圈)等展示进度相关

  6. 拖动条(类SeekBar)

  7. RatingBar

  8. 列表、网格、瀑布流控件

  9. 对话框(Dialog、BottomSheet等)

  10. 日历、时间选择

  11. 分类筛选

  12. 角标、徽章

  13. 图表

  14. 富文本编辑、代码高亮等

  15. 图片展示(类ImageView)

  16. 标签组控件(类FlowLayout)

  17. App新手引导、高亮

  18. 侧边栏索引、固定Header

  19. 菜单(类Menu,但不包括侧滑菜单)

  20. 通用下拉刷新、加载更多

  21. 广告轮播、垂直公告

  22. 滑动返回(类SwipeBack)

  23. 指示器、Tab

  24. 动画相关库

  25. 侧滑菜单(类SlidingMenu)

  26. 辅助类库

目前想到的通用控件种类就这么多,如有遗漏,欢迎指正哈。

主流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你所需知道的一切。

你可能感兴趣的:(Android)