百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

Android主流UI开源库整理_android ui 布局开源框架

ztj100 2025-09-12 06:17 7 浏览 0 评论

前言

最近老大让我整理一份 Android主流UI开源库 的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。

标题隐含了两个层面的意思,一个是主流,另一个是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你所需知道的一切。

相关推荐

xls文件保存宏_excel如何保存宏为其他文件使用

一、直接保存为旧版.xls格式(兼容性优先)1.操作方法-在Excel中打开文件→点击「文件」→「另存为」→保存类型选择“Excel97-2003工作簿(*.xls)”。-系统...

C 插入或删除word分页符_怎么删除插了分页符的空白页

分页符是word中常用的一种分页的符号,它标志着上一页的结束和下一页的开始。在word中分页符有两种,一种是自动分页符,也叫软分页符,即一页数据写满以后转到下一页时word自动插入的一个分页符;另一种...

177.C# SqlSugar 删除数据_sql删除数据代码

摘要普通删除、单表删除、表达式删除,子查询删除正文根据主键Where条件删除varret=Db.Deleteable<wms_user>().Where(newwms_user...

C#使用handle实现获取占用指定文件或文件夹的进程(Locksmith功能)

前言:很多时候,一些不知道啥进程,把你的文件给占用了,然后就没办法删掉或者做其他操作。如果使用Locksmith功能,就可以实现快速锁定是哪个进程在搞事情,把对应进程干掉就可以了。下面内容演示C#使用...

小材大用!用好Windows 10文件缩略图

当我们将图片传输到电脑中后,默认情况下Windows会显示小图预览,因此我们可以不打开图片就能看到图的基本模样。为了防止系统负担过重,Windows只在打开特定的文件夹时生成缩略图,且在系统关机时缩略...

C#:删除 Word 中的页眉或页脚_c# 删除文件

C#:删除Word中的页眉或页脚在处理Word文档批量操作时,我们经常需要清除页眉页脚——比如合并文档后去除冗余信息,或为标准化报告格式。手动操作不仅繁琐,更难以集成到自动化流程中。使用Spire...

C# INI文件读写方法_c#ini文件如何一次读取所有数据

在C#项目的开发实践里,存在着一种十分常见且实用的操作习惯,那就是把一部分常用的参数值写入到.ini文件当中。这种做法背后有着充分的考量。从软件系统的设计角度来看,将常用参数集中存放在.ini文件...

C# 基础知识系列- 14 IO篇 文件的操作(1)

0.前言本章节是IO篇的第二集,我们在上一篇中介绍了C#中IO的基本概念和一些基本方法,接下来我们介绍一下操作文件的方法。在编程的世界中,操作文件是一个很重要的技能。...

C# 删除 Excel 工作表中的空白行和空白列

在日常处理Excel数据时,经常会遇到表格中夹杂着许多空白行或空白列。这些空白内容不仅影响数据的整洁性,还可能导致数据处理和分析结果出错。手动逐一删除这些空白行列不仅效率低下,而且容易遗漏。本文将...

微信小程序原生开发【辅助框架】 LWX

项目介绍作者开发了一年多的小程序,在开发过程中遇到了很多的坑与不方便之处,同时又对原生开发有着一定的执著,但是对于习惯了我这种用惯了vue的人来说,原生小程序中的一些写法确实让人感到难受,我想大家在进...

谷歌正式发布Android 12,UI更好看,打造属于自己的定制化属性

焕然一新的Android12今年5月的GoogleI/O大会上,谷歌推出了Android12系统,这是原生安卓系统史上最大的设计变化,从此旧貌换新颜。...

【推荐】一个基于 SpringBoot 框架开发的 OA 办公自动化系统

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍...

「干货」9个最热门React PC端组件库|UI框架

最近一直在使用React.js开发项目,在开发过程中也用到了一些开源UI组件库。上次有给大家分享React移动端组件库,今天,就给大家推荐9个常用ReactPC端组件库。...

Android主流UI开源库整理_android ui 布局开源框架

前言最近老大让我整理一份Android主流UI开源库的资料,以补充公司的Android知识库。由于对格式不做特别限制,于是打算用博客的形式记录下来,方便查看、防丢并且可以持续维护、不断更新。标题隐...

Datetimepicker.js用法_datepicker的用法

$('.form_date').datetimepicker({//初始化language:'zh-CN',//weekStart:1,...

取消回复欢迎 发表评论: